我以前做过这个,但似乎没有任何效果。这是我的代码:
在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上运行(设备和模拟器的结果是相同的)。
我错过了什么!?
答案 0 :(得分:11)
在watchOS 2中,您需要记住有2个不同的进程在运行:
这两个进程都有自己的沙盒,这就是为什么他们称之为“本机”,所以如果你尝试使用共享的NSUserDefaults它将无法工作,因为Apple Watch应用程序的沙箱与主机iPhone应用程序完全不同。
如果您想将手机中的内容保存到Apple手表上的NSUserDefaults目标:
使用 WatchConnectivity 将要保存的数据发送到手表。 然后当手表收到您发送给它的数据时,将其保存到Apple手表的默认NSUserDefaults。