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

应用程序组function已打开,并在两个目标上都检查了适当的组。

现在,当我在手表上运行读取代码时,objectForKey返回nil,但它在iOS上可用(设备和模拟器结果相同)。

我错过了什么!

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

  1. Apple Watch程序
  2. iPhone过程

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

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

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