iCloud在Mac OS X Lion应用程序中的支持



在Mac OS X(10.7 Lion)非基于文档的应用程序中,我希望包含iCloud支持,这样我就可以在其他Mac上的同一应用程序的其他实例之间共享数据(而不是在iOS设备上)。浏览了一下苹果文档后,我发现我应该在iCloud中使用键值列表存储,因为我要上传的文档只包含一组自定义对象(具有简单属性,如名称(字符串)、日期(日期对象)…)。这个文件是我唯一想上传到iCloud的东西。在应用程序中,我已经实现了使用NSFileManager- (void)writeData:(NSData*)data toPath:(NSString *)path将文件保存到磁盘(或者不管是什么,我已经忘记了)。它再次使用NSFileManager(使用- (NSData *)dataInFileAtPath:(NSString*)path或其他任何方法)从文件中加载。该文件存储在用户的ApplicationSupport目录中的一个子目录中。每当向数组中添加新项或修改数组中的项时,都会保存它。

我想知道是否有人可以提供教程的链接,或者为我指明正确的方向,将该文件写入iCloud,然后在同一应用程序的其他实例上再次下载?我找到的所有教程和文档都只适用于iOS。任何帮助都将不胜感激!

提前感谢!

Ben

只需使用NSUbiquitousKeyValueStore,它与NSUserDefaults非常相似,只是它是写入iCloud的。您应该阅读Mac应用程序编程指南的iCloud存储部分,但您需要做的可能很简单,只需在Xcode中的应用程序目标的摘要选项卡中启用授权,然后执行以下操作:

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

然后,要检索您的数据,只需执行

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

这里需要注意的一点是,要使用自定义对象数组,这些对象必须全部实现NSCoding协议。这只是实施两种方法的问题;这里有一个很好的教程。

附言:无论你是为OS X还是iOS开发,你都使用相同的API,所以你没有理由不遵循iOS的iCloud存储教程。

最新更新