2012-01-16 107 views
4

在Mac OS X(10.7 Lion)非基於文檔的應用程序中,我希望包含iCloud支持,以便可以在其他應用程序的其他實例之間共享數據mac(不適用於iOS設備)。在瀏覽Apple文檔後,我發現我應該在iCloud中使用關鍵值列表存儲,因爲我想上傳的文檔僅包含一組自定義對象(具有簡單屬性,如名稱(字符串) ,日期(日期對象),...)。這個文件是我想要上傳到iCloud的唯一的東西。在應用程序中,我已經實現了使用NSFileManager- (void)writeData:(NSData*)data toPath:(NSString *)path(或任何它,我忘記了)將文件保存到磁盤。它再次使用NSFileManager從文件加載(使用- (NSData *)dataInFileAtPath:(NSString*)path,或其他任何東西)。該文件存儲在用戶的應用程序支持目錄中的子目錄中。只要將新項目添加到數組中,或者修改了數組中的項目,它就會被保存。iCloud在Mac OS X Lion的應用程序中支持

我想知道是否有人可以提供指向教程的鏈接,或者指向正確的方向,將該文件寫入iCloud,然後在同一應用程序的其他實例上再次下載它?我發現的所有教程和文檔都只適用於iOS。任何幫助將不勝感激!

在此先感謝!

回答

3

只需使用NSUbiquitousKeyValueStore,這是很多喜歡NSUserDefaults,只不過它寫入到iCloud。你應該閱讀的Mac應用程序編程指南的iCloud Storage部分,但你需要做的可能是爲使權利在你的應用目標的在Xcode摘要選項卡,然後做這樣的事情簡單的:

NSData *dataToStore = [NSKeyedArchiver dataWithRootObject:yourArray]; 
[[NSUbiquitousKeyValueStore defaultStore] setData:dataToStore forKey:@"yourKey"]; 

然後,檢索您的數據,只是做

NSData *retrievedData = [[NSUbiquitousKeyValueStore defaultStore] dataForKey:@"yourKey"]; 
NSArray *retrievedArray = [NSKeyedUnarchiver unarchiveObjectWithData:retrievedData]; 

這裏的一個警告是,這與自定義對象的數組工作,這些對象都必須實現NSCoding protocol。這只是實施兩種方法的問題;這是一個很好的tutorial

P.S.無論您是爲OS X還是iOS開發,都使用相同的API,因此沒有理由不遵循iCloud存儲的iOS教程。