【问题标题】:Make SwiftyUserDefaults array accessible to iOS and watchOS app让 iOS 和 watchOS 应用可以访问 SwiftyUserDefaults 数组
【发布时间】:2016-05-28 14:31:53
【问题描述】:

我正在使用出色的SwiftyUserDefaults,它是NSUserDefaults 与 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 框架。这是否正确,如果正确,我该如何使用它来允许手表应用访问arrayToStore

问题

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

我正在尝试什么:

  1. Enable app groups by,在iOS app和watchKit app的“Capabilities”中,打开app groups,选择app group如答案here
  2. 在 watchKit 应用的应用扩展中,使用 print([Defaults[arrayToStore]]),导致“使用未解析的标识符 arrayToStore”。预期的结果是打印“元素 1”、“元素 2”、“元素 3”

【问题讨论】:

标签: ios swift nsuserdefaults watchkit swiftyuserdefaults


【解决方案1】:

使用WatchConnectivity

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

【讨论】:

  • 感谢您的帮助!抱歉,我仍在学习 Swift,我不确定我是否知道如何实现您的建议:如果您有机会在您的答案中添加一些代码以向我展示您的意思,那就太好了……而且谢谢你的回答,我已经接受了。
  • 没问题。我从这个 turoail 学到了很多东西:raywenderlich.com/117329/… 它很棒而且很容易理解。我建议你遵循这个,因为它基本上是你遇到的同样的问题
猜你喜欢
  • 2016-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 2020-03-13
相关资源
最近更新 更多