我想询问如何在watchOS应用程序中使用NSUserDefaults
。它的数据是否与iOS应用程序的NSUserDefaults
数据不同?
这里 有 很多 关于这个主题的 stackoverflow问题,所有这些问题都有相同的答案。 也就是说,例如
使用共享组容器与其iOS应用程序共享数据的手表应用程序必须重新设计以处理数据。在watchOS 2中,每个进程必须管理本地容器目录中任何共享数据的自己的副本。对于实际由两个应用程序共享和更新的数据,这需要使用Watch Connectivity框架在它们之间移动数据。然而,所有引用的文本都从网页 the web page referred 中消失了,请参见this accepted answer。
相反,在当前的Apple Docs中有以下内容:
此外,iOS会自动将您的iOS应用程序的只读副本转发到Apple Watch。您的WatchKit扩展可以使用NSUserDefaults对象读取这些首选项,但不能直接更改默认数据库。
我的两个问题是:
哪一个是正确的:我上面提到的所有StackOverflow问题的答案,还是Apple文档?
iOS使用哪种机制将NSUserDefaults对象转发到watchOS应用程序?这个机制可靠吗,可以依赖于未来的开发,并且数据更新到最近有多久?这个功能在不久的将来可能会被弃用吗?
非常感谢
transferUserInfo(_:)
https://developer.apple.com/reference/watchconnectivity/wcsession/1615671-transferuserinfo 。另外,如果手表正在向iOS应用程序更新某些内容,请不要等待再次读取NSUserDefaults
。只需将更新发送到iOS应用程序,并相应地更新手表,而无需再次读取默认值。手表应该作为自己的应用程序。发送消息并根据更新执行操作。希望这有所帮助。 - lostAtSeaJoshuatransferUserInfo
无法确保数据已在手机上更新。随后的NSUserDefaults
读取可能会返回意外的不是最新的数据。顺便说一下,我认为选择传输方法存在权衡。 - transang