关于关系数据/待办事项列表的NSDocument?

时间:2015-01-10 23:16:51

标签: macos core-data nsdocument

我想创建一个OS X应用程序,用户可以在其中编辑类似于待办事项列表的项目 - 每个项目都有文本,状态(完成/待办事项),创建日期和其他一些数据。待办事项列表的项目也与其他实体有关系。

我为此创建了一个使用核心数据数据模型的iOS应用程序......现在我想创建一个OS X应用程序并进行同步。

我是OS X开发的新手,只是偶然发现了NSDocument,并想知道这是否可用。我只是希望用户看到类似于excel表的列表并可以编辑它。我发现一些例子只存储一个字符串,例如https://developer.apple.com/library/mac/documentation/DataManagement/Conceptual/DocBasedAppProgrammingGuideForOSX/ManagingLifecycle/ManagingLifecycle.html或本教程http://www.raywenderlich.com/12779/icloud-and-uidocument-beyond-the-basics-part-1

还有NSPersistentDocument来处理核心数据,我认为这是我必须尝试的。

但总的来说,将NSDocument用于我的待办事项列表是否有任何好处?一个可能是撤消功能,但我不确定这是否适用。有什么建议吗?

我也不确定是否必须为每个待办事项使用一个文档,或者更确切地说将它们全部加载到一个文档中,如果这对于表视图正常工作...也许在todo应用程序中我永远不会得到数百个条目,但主要是我可以。我可以分页等吗? 谢谢!

编辑:我特意阅读Document-based application, or not?"关键问题是独立性问题。如果应用程序模型中的所有对象都相关,则无需管理独立文档。"不知道如何将此应用于我的模型...它的关系。一些1:1和1:n的关系。这是否意味着我的所有物体都相关?或者我仍然可以将它们视为"独立的"文件...?

1 个答案:

答案 0 :(得分:1)

如果应用只有一个待办事项列表,那么使用NSDocument没有任何好处。使用核心数据,您无需使用NSDocument即可获得撤消支持。

如果您的应用允许人们创建多个待办事项列表并将每个列表保存在自己的文件中,NSDocument会有所帮助。 NSDocument专为文字处理器和电子表格等应用而设计,人们可以创建多个文档并同时打开多个文档。如果您将NSDocument用于此应用程序,则每个待办事项列表都将是其自己的文档。

<强>更新

NSDocument的主要好处包括“文件”菜单。使用NSDocument时,选择文件&gt; New创建一个新文档。选择文件&gt;打开打开“打开文件”对话框,以便从磁盘加载文档。选择文件&gt;保存新文档时保存,打开“保存文件”对话框,以便将文档另存为磁盘上的文件。

在确定是否使用NSDocument时,请问自己以下问题:您是否希望用户通过选择文件&gt;创建新的待办事项列表?新?您是否希望用户通过选择文件&gt;将待办事项列表另存为单独的文件?保存?您是否希望用户通过选择文件&gt;打开待办事项列表?打开?如果这些问题的答案是肯定的,NSDocument将帮助您。如果这些问题的答案为否,则NSDocument不会帮助您。此外,NSDocument在处理&#34;其他文件时不会帮助您。引用列表中的各个待办事项。

要回答有关iOS同步的问题,您是否在iOS应用中使用了UIManagedDocument?如果是这样,您可以在Mac应用程序中使用NSPersistentDocument并共享相同的Core Data模型。如果没有,您将无法使用NSPersistentDocument。您必须在Mac应用中使用NSManagedObject才能在iOS和Mac应用中使用相同的Core Data模型。可以在不使用NSPersistentDocument的情况下将NSDocument和Core Data一起使用,但我不知道如何一起使用它们。但是,如果您未在iOS应用中使用UIManagedDocument,则表明您不应在Mac应用中使用NSDocument。