簡體   English   中英

使iOS和watchOS應用程序可以訪問SwiftyUserDefaults數組

[英]Make SwiftyUserDefaults array accessible to iOS and watchOS app

我正在使用優秀的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。

我做了一些研究並了解到Apple為這個App Groups提供了一個解決方案,它可以在NSUserDefaults和其他數據存儲方式中實現跨應用程序 - 在這種情況下,在父iOS應用程序和它的配套watchOS watchKit應用程序之間。 編輯:我得知@PETAHCHRISTIAN APP組不適用於WATCHOS 2.那么,其他方法是什么?

編輯2:知道應用程序組不是解決方案,我做了一些研究,並確定可能的解決方案是WatchConnectivity框架。 這是否正確,如果是這樣,我如何使用它來允許監視應用程序訪問arrayToStore

但是,我的問題是: 如何使用SwiftyUserDefaults執行此SwiftyUserDefaults 我希望能夠擁有arrayToStore ,即父應用程序中的數組,可通過應用程序組通過watchOS 2應用程序讀取(或者其他方式,如果有更好的方式注意:感謝@PetahChristian我已經了解到應用程序組不是這樣做的方法。如何,我如何通過其他方式從父應用程序獲取手表應用程序讀取數組的預期結果?)。

我在想什么:

  1. 通過啟用應用組,在iOS應用和watchKit應用的“能力”,打開的應用程序組和選擇所述應用程序組如圖中的答案這里
  2. 在watchKit應用程序的app擴展中,使用print([Defaults[arrayToStore]]) ,導致“使用未解析的標識符arrayToStore”。 預期的結果是打印“元素1”,“元素2”,“元素3”

使用WatchConnectivity

您可以將手表的請求發送到手機,然后將某些內容發回手表。 我將數組存儲在Singleton中,然后使用WatchConnectivity的sendMessage函數。 即使iPhone應用程序處於后台,此功能也能正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM