Я использую отличный SwiftyUserDefaults, обертка для NSUserDefaults
с Swift, чтобы мое приложение сохраняло определенный массив данных, например (много кода удалено, чтобы показать только важные части :Сделать массив SwiftyUserDefaults доступным для iOS и приложения watchOS
Рабочий код
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]])
}
}
Исследование
выше работает отлично, но я ALS o хотите, чтобы приложение watchKit watchOS 2 этого родительского приложения могло читать arrayToStore.
Я сделал немного research и узнал, что Apple предлагает решение для этого, группы приложений, которые позволяют вещам в NSUserDefaults и других средствах хранения данных быть доступными в приложениях - в данном случае между родительским приложением iOS и его компаньон watchOS watchKit приложение. EDIT: Я узнал, что СПАСИБО @PETAHCHRISTIAN, ЧТО ГРУППЫ APP НЕ РАБОТАЮТ ДЛЯ WATCHOS 2. ТАК, КАКИЕ-ЛИБО ДРУГИЕ СРЕДСТВА?
Редактировать 2: Знание того, что группы приложений не является решением, я сделал несколько больше исследований и определил, что возможное решение - это основа WatchConnectivity
. Правильно ли это, и если да, то как я могу использовать его, чтобы позволить часовому приложению иметь доступ к arrayToStore
?
Вопрос
Однако мой вопрос: Как мне это сделать с SwiftyUserDefaults
? Я хочу иметь arrayToStore
, массив в родительском приложении, читаемый приложением watchOS 2 через группы приложений (или другое означает, что если есть лучший способ ПРИМЕЧАНИЕ: Благодаря @PetahChristian я узнал, что группы приложений не являются как это сделать. Как я могу получить желаемый результат приложения часов, просматривающего массив из родительского приложения другими способами?).
То, что я пытаюсь:
- Включить приложение группы по, в «Возможности» из приложения IOS и watchKit приложение, поворачиваясь на приложение групп и выбрать группу приложений, как показано в ответ here
- В расширении приложения для приложения watchKit, используя
print([Defaults[arrayToStore]])
, в результате получается «Использование неразрешенного идентификатора arrayToStore». Ожидаемый результат печати «Элемент 1», «Элемент 2», «Element 3»
[группы приложений не поддерживаются в watchOS 2] (http://stackoverflow.com/questions/30851729/nsuserdefaults-not-working-on-xcode-beta-with-watch-os2). –
@PetahChristian Спасибо! Если вы опубликуете ответ о том, как это сделать без групп приложений, я был бы рад принять его! – rocket101