2014-01-07 70 views
1

我有一個基於iOS的UIDocument的「Shoebox」Mac應用程序。iCloud&Shoebox應用程序:如何自動同步文件包?

我試圖找出通過iCloud在Mac和iOS之間同步數據的最佳策略。

我不能在Mac應用程序中採用NSDocument(這是一個鞋盒應用程序,沒有單獨文檔的概念,類似iTunes中的專輯)。

我的Mac應用程序的計劃是這樣的:

  • 存放在「數據」目錄中的每個項目的文件包
  • 使用文件封裝寫的包
  • 使用文件的協調同步閱讀/寫操作(在文件包的 「根」 的文件夾同步)

對於iOS應用:

  • 加載的Mac應用程序在數據目錄創建爲UIDocument小號
  • 依靠UIDocument更改通知/文件協調
  • 我不會用Documents文件夾中的文件包,因爲我不想讓用戶可以看到在設置應用程序的文件

我的問題:

  • 我怎樣才能確保從Mac我的文件包的缺點是同步的對iOS的istent方式? (即將對包中多個文件的更改作爲一個更改自動處理)
  • 設置目錄上的「文件包」位(實際上是通過導出UTI執行此操作)就足夠了嗎?
  • 有沒有一種方法來實際模擬/測試呢?

回答

2

你是在這裏的世界。在機器之間同步文件包沒有什麼神奇的功能 - 有太多未解決的問題,iCloud會同步閃爍。當你的軟件包中的一半數據文件寫出來,然後用戶關閉她的電腦,其餘的不寫?如果主索引文件是從網上正確讀取的,但是在加載它所引用的任何數據文件之前網絡出現故障,該怎麼辦?

據我所知,iCloud並沒有採取任何措施來解決這類問題。

但是,這就是說,即使鞋盒應用程序我會(並且)使用NSDocument。讓它做你想做的事情並不是很多工作,而且你可以免費獲得很多東西。就像,只需從主菜單中翻開「打開」和「保存」菜單項,並告訴NSDocumentController在應用程序啓動時打開數據文件。這就是我們所做的。

+0

感謝Wil。我想過使用NSDocument,但這帶來了自己的問題。我發現NSDocument中有更多的UI代碼,例如處理衝突,顯示錯誤消息等。所有這些都使用文檔名稱,在我的情況下,這是一個唯一的字符串,對用戶來說是沒有意義的。另外,我發現在一個NSWindow中處理多個文檔非常棘手。話雖如此,我會再給NSDocument一個鏡頭。 – Mark

+0

您應該可以調用-setDisplayName:或subclass -displayName將名稱設置爲更人性的名稱,例如應用的名稱。 –

+0

如何處理UI中的版本衝突?你使用默認NSDocument警報表還是有辦法自定義?在我的情況下,我可能會實際上在我的應用程序的80%案例中合併衝突版本,而無需用戶交互。 – Mark

相關問題