<?xml version="1.0" enCoding="UTF-8"?><!DOCTYPE pList PUBliC "-//Apple//DTD PList 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><pList version="1.0"><dict> <key>get-task-allow</key> <true/> <key>com.apple.developer.ubiquity-kvstore-IDentifIEr</key> <string>$(AppIDentifIErPrefix)$(CFBundleIDentifIEr)</string> <key>keychain-access-groups</key> <array> <string>$(AppIDentifIErPrefix)$(CFBundleIDentifIEr)</string> </array></dict></pList>
按照“配置多个应用程序的公共键值存储”下的http://developer.apple.com/library/mac/#documentation/General/Conceptual/iCloudDesignGuide/Chapters/iCloudFundametals.html中的说明 *** 作后,这是我的v2权利文件的样子:
<?xml version="1.0" enCoding="UTF-8"?><!DOCTYPE pList PUBliC "-//Apple//DTD PList 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><pList version="1.0"><dict> <key>com.apple.developer.ubiquity-kvstore-IDentifIEr</key> <string>$(TeamIDentifIErPrefix)com.companyname.MyApp</string> <key>get-task-allow</key> <true/> <key>keychain-access-groups</key> <array> <string>$(AppIDentifIErPrefix)$(CFBundleIDentifIEr)</string> </array></dict></pList>
根据文档,v2现在应该从与v1相同的键值存储中读取.但是,在执行简单测试时,它会失败.这是我如何重现.
>打开MyApp 1.0.将键入“InstalledVersion1”的bool值“YES”写入键值存储区.
NSUbiquitouskeyvalueStore* store = [NSUbiquitouskeyvalueStore defaultStore];[store setBool:YES forKey:@"InstalledVersion1"];
>打开MyApp 2.0并从商店中读取此值.
NSUbiquitouskeyvalueStore* store = [NSUbiquitouskeyvalueStore defaultStore];[store synchronize];NSLog(@"%@",[store dictionaryRepresentation]);
这打印{}.
它应该打印像{“InstalledVersion1”= 1; }
……但事实并非如此.
我究竟做错了什么?我只需要更耐心地让商店同步吗?
设备日志如果您感兴趣:https://gist.github.com/dlo/688f187c75fd1b1fdc78(在调试器中运行p(voID)[[NSUbiquitouskeyvalueStore defaultStore] _printDeBUGDescription]之后).
解决方法 答案有点荒谬,但在这里,任何其他人都面临着类似的问题.这就是我做的.
>我的iCloud存储中有一个名为Commondocuments的条目.我已经把它删了.
>我打开了通过蜂窝数据进行iCloud document传输.
经过三天的尝试,事实证明,iCloud存储中的一个不起眼的项目和看似无关的设置是解决问题的原因.
如果这两件事不适合你,我祝你好运.一帆风顺.
总结以上是内存溢出为你收集整理的ios – 在多个应用程序之间共享公共键值存储不起作用全部内容,希望文章能够帮你解决ios – 在多个应用程序之间共享公共键值存储不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)