设置捆绑不能在watchOS 2上工作
这在watchOS 1上不是问题,但现在在watchOS 2上我无法读取手表扩展中的值。
根据苹果公司的文件 ,这是可能的。 根据这个线程上的一些人,这是可能的。 根据这个线程的苹果员工,这是可能的。
据我所知,我正确地设置了一切:
- 我使用相同的标识符在iOS应用程序和监视扩展上启用了应用程序组。
- 我将Settings-Watch.bundle添加到iOS应用程序,并向Plist添加了具有相同标识符的
ApplicationGroupContainerIdentifier
当我使用标识符作为套件名称初始化NSUserDefaults
对象时,我无法读取手表扩展中的值。 我可以在iOS应用上阅读。 这发生在模拟器和真实的设备上。
请不要发表关于如何使用Watch连接的答案。 在watchOS 2上,只有共享应用程序组才可以做到这一点,而不需要手表连接,人们可以做到这一点,这里直接出来的文档 :
在watchOS 2中,您的WatchKit扩展可能会读取首选项的值,但不能写入新的值。 watchOS 2中的首选项从iOS转发到Apple Watch,但您所做的任何修改都不会发送回iOS。
我已经编辑了我的答案。 以前,它谈到无法使用应用程序组来同步watchOS 2中的数据,但是您的具体问题是有关Settings Bundle,它仍然在watchOS 2中从iOS同步到Apple Watch。
我无法在模拟器的Xcode 7.1 / 7.2中使用它 , 但是它可以在真实的设备上运行。 从文档:
watchOS 2中的首选项从iOS转发到Apple Watch,但您所做的任何修改都不会发送回iOS。 在watchOS 1中,WatchKit扩展可以直接访问默认数据库,并且可以读取和写入数值。
所有3个目标应该configuration相同的应用程序组(这里的Watch App目标似乎是OP中缺less的组件):
我的设置包:
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) }
最后的结果是:
所以,它确实按预期工作,只在模拟器中没有。 看起来模拟器中的两个设备之间有一些隔离,试图把我的手指放在那里发生的事情有点令人沮丧。
这是因为这些应用现在在Apple Watch上运行,这意味着他们无法从iPhone获取设置,因为这些设置不再存储在同一台设备上。 更多信息: 无法从watchOS 2中的设置包中获取值
使用`WCSessions处理的新过程可以在下面提到的文件中的示例苹果应用程序 – 列表器中看到。
此外, https: //stackoverflow.com/a/32628105/1640786中提到的答案似乎使整个过程更加方便。
- UIButton标记没有被分配6个单元格后的indexPath.row
- 如何closuresXcode 5中的图标光泽效果
- Каждому视图повсплывающемуменю
- 无形的执行顺序(dispatch_semaphore_t,dispatch_group_async)及其与不同调度队列types组合使用
- UIAlertControllerbuttonfunction不起作用
- 在AppStore中发布iOS应用程序
- 一个iOS应用程序甚至有可能访问另一个应用程序的Caches目录吗?
- 使用CommonCrypto与IV,但总是返回零
- 在获取聊天logging的同时,我没有从Openfire获取两个用户历史logging