微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iOS 9和WatchOS 2上的NSUserDefaults(suiteName :) – 无法正常工作?

我以前做过这个,但似乎没有任何效果.这是我的代码

保存在iOS应用程序中

let groupDefaults = NSUserDefaults(suiteName: "group.company.appSharedDefaults")
groupDefaults?.setobject(theArray,forKey: "theKey")
groupDefaults?.synchronize()

阅读(适用于iOS但不适用于WatchOS 2)

let groupDefaults = NSUserDefaults(suiteName: "group.company.appSharedDefaults")

if groupDefaults!.objectForKey("theKey") != nil {
    textEmojiArray = NSMutableArray(array: groupDefaults!.objectForKey("theKey") as! NSArray)
} else {        
    //error
}

两个.entitlements文件都包含group.company.appSharedDefaults

已打开应用程序组功能,并在两个目标上检查了相应的组.

现在,当我在监视对象上运行读取代码时,objectForKey返回nil,但它在iOS上有效(设备和模拟器结果相同).

我错过了什么!?

解决方法

在watchOS 2中,您需要记住,有2个不同的进程在运行:

> Apple Watch Process
> iPhone流程

这两个进程都有自己的沙箱,这就是为什么他们称之为“本机”,所以如果你尝试使用共享的NSUserDefaults它将无法工作,因为Apple Watch应用程序的沙箱与主机iPhone应用程序完全不同.

如果您想将手机中的内容保存到Apple手表上的NSUserDefaults目标:

使用WatchConnectivity将要保存的数据发送到手表.然后当手表收到您发送给它的数据时,将其保存到Apple手表的认NSUserDefaults.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐