gpt4 book ai didi

ios - 使 SwiftyUserDefaults 数组可供 iOS 和 watchOS 应用程序访问

转载 作者:搜寻专家 更新时间:2023-10-31 22:47:07 27 4
gpt4 key购买 nike

我正在使用优秀的 SwiftyUserDefaultsNSUserDefaults 的包装器,使用 Swift 允许我的应用程序保留特定的数据数组,就像这样(删除了大量代码以仅显示重要部分:

工作代码

 import SwiftyUserDefaults //The following is to show implementation in the parent iOS app. It works fine.
class ViewController: UICollectionViewController {

var arrayToStore = DefaultsKey<NSArray>("arrayToStore")

override func viewDidLoad() {
Defaults[arrayToStore] = ["Element 1", "Element 2", "Element 3"]
}
func aFunctionThatNeedsToReadTheArray() {
print([Defaults[arrayToStore]])
}
}

研究

上面的工作正常,但我还希望这个父应用程序的 watchKit watchOS 2 应用程序能够读取 arrayToStore。

我做了一点 research并了解到 Apple 为此提供了一个解决方案,App Groups,它使 NSUserDefaults 中的内容和其他数据存储方式可以跨应用程序使用——在本例中,是在父 iOS 应用程序及其配套的 watchOS watchKit 应用程序之间。编辑:感谢@PETAHCHRISTIAN,我了解到应用程序组不适用于 WATCHOS 2。那么,还有哪些其他方法?

编辑 2:知道 App Groups 不是解决方案,我做了更多的研究,并确定一个可能的解决方案是 WatchConnectivity 框架。这是否正确?如果正确,我该如何使用它来允许 watch 应用访问 arrayToStore

问题

但是,我的问题是:如何使用 SwiftyUserDefaults 执行此操作?我希望能够拥有 arrayToStore,父应用程序中的一个数组,watchOS 2 应用程序可通过应用程序组读取(或其他方式,如果有更好的方法注意:感谢@PetahChristian 我已经了解到 App Groups 不是执行此操作的方法。因此,我如何才能获得 watch 应用通过其他方式从父应用读取数组的预期结果?)。

我在尝试什么:

  1. 通过在 iOS 应用和 watchKit 应用的“功能”中启用应用组,打开应用组并选择应用组,如答案 here 中所示。
  2. 在 watchKit 应用程序的应用程序扩展中,使用 print([Defaults[arrayToStore]]),导致“使用未解析的标识符 arrayToStore”。预期结果是打印“元素 1”、“元素 2”、“元素 3”

最佳答案

使用WatchConnectivity

您可以从 watch 向手机发送请求,然后将内容发送回 watch 。我会将数组存储在单例中,然后使用 WatchConnectivity 的 sendMessage 函数。即使 iPhone 应用程序处于后台,此功能也有效。

关于ios - 使 SwiftyUserDefaults 数组可供 iOS 和 watchOS 应用程序访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35447354/

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