【发布时间】:2018-04-04 12:53:16
【问题描述】:
是否仍然可以在 iOS 和 tvOS 之间共享 UserDefaults?
在我的 Xcode 项目中,我使用 UserDefaults 在我的 iOS 目标和我的 tvOS 目标之间共享数据。当我尝试从我的 tvOS 应用程序取回数据时,我总是从我的 UserDefaults 收到 nil 值。
这些是我共享数据的步骤:
1:为两个目标添加应用组。两个目标都使用相同的 App Group ID: group.nl.mycompany.myappname。
我使用 .nl 域,但这应该没问题,因为这也适用于我的其他项目。
2:确认两个目标具有相同的部署目标。 我尝试使用 10.0 和 11.0。
3:验证 myproject.entitlements 一切都设置好。
4:验证 developer.apple.com 上的 App Group 是否为我的包标识符启用。
5:两个目标具有相同的包 ID。我还尝试使用 2 个不同的包标识符。
6:我在 iOS 应用中写信给 UserDefaults 的方式:
guard let defaults = UserDefaults(suiteName: "group.nl.mycompany.myappname") else { return }
defaults.set("Apple", forKey: "username")
defaults.synchronize()
我通过获取如下值来确认这在我的 iOS 应用中有效:
guard let defaults = UserDefaults(suiteName: "group.nl.mycompany.myappname") else { return nil }
defaults.synchronize()
let name = defaults.string(forKey: "username")
这确实返回“Apple”。
7:打开我的 tvOS 应用并调用此代码返回 nil:
guard let defaults = UserDefaults(suiteName: "group.nl.mycompany.myappname") else { return nil }
defaults.synchronize()
let name = defaults.string(forKey: "username")
UserDefaults 共享是否可能已被删除?在您的手机和手表链接here 之间分享UserDefaults 时发生了类似的事情。我还读到 AppleTV 的 UserDefaults 的最大大小是 500kb,但保存这个简单的字符串应该没问题。
【问题讨论】:
-
你在哪里读到
UserDefaults的最大大小是500kb?我想在您的设备中有足够的空间之前没有限制。 -
@TheTiger 感谢您的回复。我在这个链接上找到了:stackoverflow.com/a/32781011/6414904
-
现在在为
tvOS指定后可能是正确的。 -
我阅读了论坛的答案,虽然该问题是针对
tvOS的,但答案并未具体说明。苹果哥明明说NSUserDefaults is allowed, and supports up to 500KB of data.我想知道!!
标签: ios swift nsuserdefaults tvos