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