spy*_*art 8 nsuserdefaults ios ios-app-group watchkit
这在watchOS 1上不是问题,但现在在watchOS 2上我无法读取手表扩展上的值.
根据Apple文档,这是可能的.根据这个帖子的一些人的说法,这是可能的.根据这个线程上的Apple员工的说法,这是可能的.
据我所知,我正确地设置了所有内容:
ApplicationGroupContainerIdentifier为plist 添加了相同的标识符当我NSUserDefaults使用标识符作为套件名称初始化对象时,我无法读取监视扩展名上的值.我可以在iOS应用程序上阅读它们.这发生在模拟器和真实设备中.
请不要发布有关如何使用Watch Connectivity执行此操作的答案.只有在没有Watch Connectivity的watchOS 2上的共享应用程序组才能实现这一点,人们可以做到这一点,而这里直接来自文档:
在watchOS 2中,您的WatchKit扩展可能会读取首选项的值,但您无法编写新值.watchOS 2中的首选项从iOS转发到Apple Watch,但您所做的任何修改都不会发送回iOS.
我编辑了我的答案.之前,它谈到了无法使用应用程序组在watchOS 2中同步数据,但您的具体问题是关于设置包,它仍然在iOS OS中与iOS Watch同步.
我无法在Simulator中的Xcode 7.1/7.2中使用它,但它确实可以在真实设备上运行.来自文档:
watchOS 2中的首选项从iOS转发到Apple Watch,但您所做的任何修改都不会发送回iOS.在watchOS 1中,WatchKit扩展可以直接访问默认数据库,并可以读写值.
所有3个目标应该配置相同的应用程序组(此处的Watch App目标似乎是OP问题中缺少的组件):
我的设置包:
一些简单的接口代码InterfaceController.swift:
@IBOutlet var label: WKInterfaceLabel!
@IBAction func buttonAction() {
let sharedDefaults = NSUserDefaults.init(suiteName: "group.testSettings")
let name_preference = String(sharedDefaults?.objectForKey("name_preference"))
self.label.setText(name_preference)
}
Run Code Online (Sandbox Code Playgroud)
最后的结果:
因此,它确实按预期工作,而不是在模拟器中.似乎模拟器中的两个设备之间存在一些隔离,并且试图准确地指出那里正在发生的事情,这有点令人沮丧.
| 归档时间: |
|
| 查看次数: |
1278 次 |
| 最近记录: |