繁体   English   中英

适用于Mac OS X Lion的iCloud支持

[英]iCloud Support in an application for Mac OS X Lion

在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 ,或者它是什么)。 该文件存储在用户的Application Support目录中的子目录中。 只要将新项添加到数组中,或者修改了数组中的项,就会保存它。

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

提前致谢!

只需使用NSUbiquitousKeyValueStore ,它与NSUserDefaults非常相似,只不过它是写入iCloud的。 您应该阅读Mac App Programming指南中的iCloud Storage部分,但您需要做的事情可能就像在Xcode中的App Target的Summary选项卡中启用权利一样简单,然后执行以下操作:

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

然后,要检索您的数据,就这样做

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

这里要注意的是,为了使用一组自定义对象,这些对象必须都实现NSCoding协议 这只是实现两种方法的问题; 这是一个很好的教程

PS无论您是针对OS X还是iOS进行开发,都使用相同的API,因此没有理由不按照iCloud存储的iOS教程进行操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM