![](/img/trans.png)
[英]How to assign application to all desktops (spaces) of Mac OS X Lion using Objective C?
[英]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.