2015-01-10 14 views
0

我想創建一個OS X應用程序,用戶可以在其中編輯類似待辦事項列表的項目 - 每個項目都有文本,狀態(完成/待辦事項),創建日期和其他一些數據。待辦事項列表的項目也與其他實體有關係。關係數據/待辦事項列表的NSDocument?

我爲此創建了一個使用核心數據數據模型的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作爲我的待辦事項清單有什麼好處嗎?一個可能是撤消功能,但我不確定這是否適用。任何建議?

我也不確定是否必須爲每個待辦事項使用一個文檔,或者將它們全部加載到一個文檔中,並且如果此功能與表格視圖正確匹配...也許在待辦事項應用程序中,我永遠不會獲得數百的條目,但主要是我可以。我可以分頁等嗎? 謝謝!

編輯:我剛剛專門讀了Document-based application, or not?「關鍵問題是獨立性,如果應用程序模型中的所有對象都是相關的,那麼不需要管理獨立文檔。不知道如何將其應用於我的模型...這是關係。一些1:1和1:n的關係。這是否意味着我的所有物體都是相關的?還是我仍然可以把它們當作「獨立」的文件......?

回答

1

如果應用程序只有一個待辦事項列表,使用NSDocument沒有任何好處。使用核心數據,你將得到撤消支持,而不必使用NSDocument。

如果您的應用程序允許用戶創建多個待辦事項列表並將每個列表保存在其自己的文件中,NSDocument將有所幫助。 NSDocument專爲諸如文字處理器和電子表格等應用程序而設計,人們可以創建多個文檔並同時打開多個文檔。如果您要爲此應用程序使用NSDocument,則每個待辦事項列表都將是它自己的文檔。

UPDATE

NSDocument的主要好處包括文件菜單。當您使用NSDocument時,選擇File> New將創建一個新文檔。選擇「文件」>「打開」會打開一個「打開文件」對話框,供您從磁盤加載文檔。當您保存新文檔時選擇文件>保存打開一個保存文件對話框,您可以將該文檔保存爲磁盤上的文件。

確定是否使用NSDocument時,問問自己以下問題:是否希望用戶通過選擇「文件」>「新建」來創建新的待辦事項列表?您是否希望用戶通過選擇「文件」>「保存」來將待辦事項列表另存爲單獨的文件?您是否希望用戶通過選擇「文件」>「打開」來打開待辦事項列表?如果這些問題的答案是肯定的,NSDocument將幫助你。如果這些問題的答案是否定的,NSDocument不會幫助你。另外,NSDocument在處理引用列表中單個待辦事項的「其他文檔」時不會幫助您。

要回答有關iOS同步的問題,您是否在iOS應用程序中使用UIManagedDocument?如果是這樣,您可以在Mac應用程序中使用NSPersistentDocument並共享相同的Core Data模型。否則,您將無法使用NSPersistentDocument。您必須在Mac應用程序中使用NSManagedObject才能在iOS和Mac應用程序中使用相同的Core Data模型。可以在不使用NSPersistentDocument的情況下一起使用NSDocument和Core Data,但我不知道如何將它們一起使用。但是,如果您在iOS應用程序中沒有使用UIManagedDocument,則表示您不應在Mac應用程序中使用NSDocument。

+0

我有多個待辦事項列表。還有一些其他的「文件」引用了這些列表中出現的個別待辦事項。我希望用戶能夠編輯類似於電子表格的每個列表。問題是,我需要使用核心數據存儲所有內容,因爲我想與iOS應用程序同步,該應用程序僅使用核心數據而非文檔,並且想要使用完全相同的(核心)數據模型。還在使用文件有益嗎?據我所知,可以使用核心數據作爲存儲,所以至少可以。 – Ixx

+0

我更新了我的答案,以回答您評論中的問題。 –

+0

這是很多有用的信息,謝謝(+1)!這聽起來像我不需要,因爲我不想讓用戶清楚我的列表是「文檔」(打開/保存等)。認爲它可能是一個內在的概念,對用戶是不可見的。另外,我沒有添加任何與iOS應用相關的文檔,因爲那時我不知道它......也許我會在方便時添加它。但是,我仍然讀到,即使不使用文檔功能,UIManagedDocument也可以方便地管理核心數據堆棧,並且還可以幫助iCloud,以防將來支持這種情況... – Ixx