2012-03-30 68 views
1

這可能是一個天真的問題 - 但我想仔細檢查,以避免浪費時間UIDocument,如果它不做我想要的。NSCoder + Uidocument:它們是否兼容?

背景:我有,我已經創建了一個簡單的文件系統到用戶創建的文檔保存了爲plists的應用程序。我有我的編碼/解碼所有工作。我正在使用一些基本類型,並使用適當的編碼器方法來處理它。我有一個命名系統,並將plists保存到Library目錄中的自定義目錄,因爲這些是用戶不應直接訪問的文檔。 (他們可以將他們的數據導出到文件目錄,如果他們選擇這樣做

我開始思考「自動保存」,然後發現UIDocument - 。看起來很偉大

所以,鑑於上述情況,它看起來像我可以使用UIDocument?我保存的是一個從NSObject派生的自定義類「Project」實例,它包含一堆包含自定義類,NSDictionaries等實例的NSMutable數組。現在我要通過這個UIDocument教程:http://www.raywenderlich.com/6015/beginning-icloud-in-ios-5-tutorial-part-1, t想發現它不會因爲我的數據等而起作用。

Upda te:(對於那些在家中閱讀...... ;-)取得了一些進展。 UIDocument使用 NSKeyedArchiver而不是 NSCoder (錯誤 - 請參閱下面的答案)但編碼方法名稱相同,因此很容易調整我已有的內容。 已經能夠儲存一個看起來像捕獲所有數據的plist,但是直到我嘗試將其全部讀回來時纔會知道。獲取我沒有整理出的錯誤:

NSFileCoordinator:發出令人驚訝的服務器錯誤信號。詳細信息:連接無效

因爲我在本地保存不清楚爲什麼它試圖連接到iCloud。希望我能把它關掉。

回答

2

我不知道你從哪裏得到關於使用NSKeyedArchiver UIDocument的東西。對於一個簡單的實現,你需要做的是提供一個NSData表示你的文檔內容 - 無論你使用NSCoder,NSKeyedArchiver,NSPropertyListSerialization還是一些自定義方案從你的模型對象中生成數據都沒關係。

鑑於這一點,我沒有看到任何理由,它不應該與你描述的數據模型工作。

+0

在此處的代碼如下:http://stackoverflow.com/questions/8479198/icloud-how-to-save-archive-containing-array-of-custom-objects - 沒有找到許多其他使用示例複雜的數據與UIDocument – 2012-03-31 01:44:07

+1

關鍵是所有的UIDocument關心的是獲得一個NSData - 它不關心數據中的內容或它到達那裏。您之前使用NSCoder製作NSData,因此您可以使用與UIDocument相同的數據。 (並不意味着你不會看到UIDocument的其他問題,但至少它們不會與你的模型設計有關。發佈一些細節/代碼,我們可以幫助診斷。) – rickster 2012-03-31 02:04:14

+0

酷 - 感謝您的澄清。我現在正在粗暴地工作。現在再提出一個問題@我並沒有在腦海中設計一個「文檔」模型的課程,所以我有一些修改要做。對NSFileCoordinator的任何想法:一個令人驚訝的服務器錯誤信號。詳細信息:連接無效的錯誤? – 2012-03-31 07:18:46