Hap*_*eki 1 nsuserdefaults ios swift tvos
是否仍然可以在 iOS 和 tvOS 之间共享 UserDefaults?
在我的 Xcode 项目中,我用于UserDefaults在 iOS 目标和 tvOS 目标之间共享数据。UserDefaults当我尝试从我的 tvOS 应用程序取回数据时,我总是收到来自我的 nil 值。
这些是我共享数据所采取的步骤:
1:为两个目标添加应用程序组。两个目标使用相同的应用程序组 ID: group.nl.mycompany.myappname。
我使用 .nl 域,但这应该没问题,因为这也适用于我的其他项目。
2:确认两个目标具有相同的部署目标。我尝试使用 10.0 和 11.0。
3:验证 myproject.entitlements 是否一切正常。
4:验证在 developer.apple.com 上为我的包标识符启用了应用程序组。
5:两个目标具有相同的包 ID。我还尝试使用 2 个不同的包标识符。
6:我UserDefaults从我的 iOS 应用程序写入的方式:
guard let defaults = UserDefaults(suiteName: "group.nl.mycompany.myappname") else { return }
defaults.set("Apple", forKey: "username")
defaults.synchronize()
Run Code Online (Sandbox Code Playgroud)
我通过获取如下值来确认这在我的 iOS 应用程序中有效:
guard let defaults = UserDefaults(suiteName: "group.nl.mycompany.myappname") else { return nil }
defaults.synchronize()
let name = defaults.string(forKey: "username")
Run Code Online (Sandbox Code Playgroud)
这确实返回“Apple”。
7:打开我的 tvOS 应用程序并调用此代码返回 nil:
guard let defaults = UserDefaults(suiteName: "group.nl.mycompany.myappname") else { return nil }
defaults.synchronize()
let name = defaults.string(forKey: "username")
Run Code Online (Sandbox Code Playgroud)
是否有可能UserDefaults已删除共享?UserDefaults在您的手机和手表链接之间共享这里发生了类似的事情。我还读到AppleTV的最大大小UserDefaults为500kb,但保存这个简单的字符串应该没问题。
Apple 在UserDefaults文档中明确指出
除了教育机构中的受管设备外,用户的默认设置本地存储在单个设备上,并持久保存以进行备份和恢复。要在用户连接的设备之间同步首选项和其他数据,请
NSUbiquitousKeyValueStore改用。
正如它所说,您应该使用基于 iCloud 的NSUbiquitousKeyValueStore同步数据存储。
至于它的 ( NSUbiquitousKeyValueStore) 限制,文档说
对于给定用户,您应用的键值存储中的可用空间总量为 1 MB。每个键值的大小限制为 1 MB,最多 1024 个键。
| 归档时间: |
|
| 查看次数: |
911 次 |
| 最近记录: |