我之前已经做过,但似乎没有任何效果。这是我的代码:
在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
应用组功能已打开,并且两个目标上的相应组均已选中。
现在,当我在watch objectForKey上运行读取的代码时,返回nil,但它在iOS上有效(设备和模拟器的结果相同)。
我想念什么!?
在watchOS 2中,您需要记住有两个不同的进程正在运行:
这两个进程都有自己的沙箱,这就是为什么它们将其称为“本机”,因此,如果您尝试使用共享的NSUserDefaults,则它将无法工作,因为Apple Watch应用程序与主机iPhone应用程序具有完全不同的沙箱。
如果要将手机中的内容保存到Apple Watch Target上的NSUserDefaults中,请执行以下操作:
使用 WatchConnectivity 将要保存的数据发送到手表。然后,当手表收到您发送给它的数据时,将其保存到Apple Watch的默认NSUserDefaults中。