gpt4 book ai didi

ios - 在 watchOS 2 中读取 NSUserDefaults(我知道 App Groups 不起作用)

转载 作者:搜寻专家 更新时间:2023-10-30 22:24:17 25 4
gpt4 key购买 nike

Apple 文档说“此外,iOS 会自动将您的 iOS 应用程序首选项的只读副本转发到 Apple Watch。您的 WatchKit 扩展可以使用 NSUserDefaults 对象读取这些首选项...”https://developer.apple.com/library/prerelease/watchos/documentation/General/Conceptual/WatchKitProgrammingGuide/SharingData.html#//apple_ref/doc/uid/TP40014969-CH29-SW1

但是我无法读取保存在我的 iPhone 应用程序中的 WatchKit 应用程序中的默认值,我做错了什么吗?

在 WatchKit 应用程序中,我什至可以保存到(仅限 WatchKit)默认值,还是根本不起作用?

iPhone 数据:

let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(dataArray, forKey: "DataSaved"

观看 ExtensionDelegate:

let defaults = NSUserDefaults.standardUserDefaults()
print(defaults.arrayForKey("DataSaved"))
print(defaults.objectForKey("DataSaved"))

arrayForKeyobjectForKey 用于打印 nil

我一定做错了什么,你知道那会是什么吗?

最佳答案

NSUserDefaults 之间的区别

NSUserDefaults 是任何设备上的内存单元,因此在 iOS 和 watchOS 以及 tvOS 等中完全不同。

例如,如果您运行的代码在 iOS 上将名为“key1”的新 key 添加到 NSUserDefaults(假设您使用的是 NSUserDefaults.standardUserDefaults()),当您请求在 watchOS 上读取其数据时,它会为您提供一个空字典。

那是因为这是第一次,您将词典仅存储在 iOS App Target 中,而不是存储在两个设备之间的共享空间中。当 WatchKit 扩展想要使用 NSUserDefaults 时,它会读取保存在 WatchKit Target 中的(空)字典,而不是 iOS Target 中的(填充)字典。

共享数据

有一些在 watchOS 和 iOS 之间共享字典的方法:

1- 使用 watchOS 2 中的 WatchConnectivity 框架,您可以在两个目标之间传递数据。您可以使用 sendMessageWCSession 类中的类似函数来执行此操作。只是不要忘记将 WCSessionDelegate 添加到您的 InterfaceController(在 watchOS 中)或 ViewController(在 iOS 中)类和应用程序委托(delegate)能够从 WatchConnectivity 接收数据。

2- 使用在线/云存储,您可以从那里的 iOS 应用程序上传词典,然后将其下载到 watchOS 应用程序。然而,这需要互联网连接,并且在很多情况下并不适用,例如,如果您的应用程序不需要连接到互联网来执行其他任务,而您强制用户连接到互联网只是为了同步一个两个目标之间的简单字典。

3- 使用应用程序组(如果您使用的是 watchOS 1),我没有对其进行更多描述,因为它已经过时并且您可能不希望只为 watchOS 1 制作您的应用程序。

结论

1- NSUserDefaults 分别在 watchOS 和 iOS 中返回两个不同的字典。

2- 要在 watchOS 和 iOS 之间共享数据,您可以使用 WatchConnectivity、Internet(不推荐)和 App Groups(在 watchOS 1 中)。

更多资源

有关 WatchConnectivity 的更多详细信息,您的问题的现代答案,您应该查看 Apple Developer Portal 中的 Apple 文档.

您还应该看到 this WWDC session谈论 watchOS 2 中包含的这个伟大的框架。

关于ios - 在 watchOS 2 中读取 NSUserDefaults(我知道 App Groups 不起作用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36050090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com