2017-01-19 12 views
2

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

ответ

0

Там что-то называется MMWomhole. Это определенно сделает работу.

0

Убедитесь, что группа приложений включена для всех целей, к которым вы хотите получить доступ. Проверьте проект -> ваша цель -> возможности в разделе «Группы приложений».