ios не позволяет содержащему приложению и содержащимся расширениям распространять общий контейнер, поэтому UserDefaults является предлагаемым решением.Передача данных между обработчиком намерений sirikit и приложением
Я попытался с помощью UserDefaults с Sirikit намерения обработчика предполагая обработчик ведет себя как расширение следующим образом:
внутри IntentHandler.swift
let shared = UserDefaults(suiteName:XXXXXXXX.group...)
shared?.set("saved value 1", forKey: "key1")
shared?.set("saved value 2", forKey: "key2")
shared?.set("saved value 3", forKey: "key3")
внутри ViewController.swift в viewDidLoad
let shared = UserDefaults(suiteName:XXXXXXXX.group...)
if let temp1 = shared?.string(forKey:"key1")
{
contentLabel.text = temp1
}
if let value = shared?.string(forKey: "key2")
{
valueLabel.text = value
}
if let key = shared?.string(forKey: "key3")
{
keyLabel.text = key
}
Я могу видеть строки, соответствующие key1 и key2, на моем экране ipad, но не для key3, переполнение кода синхронизацией не помогает.
вот мои вопросы:
1) Sirikit обработчики отличаются от других расширений? если да, как передать данные в мое приложение? если я неправильно использую UserDefaults?
2) есть ли лучший способ обрабатывать IPC между приложением и его расширениями, где мне просто нужно передать простые текстовые сообщения между ними.
используя быстрые 3.0 и Xcode 8.2.1