ios不让包含的应用程序和包含的扩展共享一个公共容器,因此UserDefaults是建议的解决方案。在sirikit意图处理程序和应用程序之间传递数据
我已经使用UserDefaults与诗丽吉意图处理程序假定该处理程序的行为作为扩展如下尝试:
内部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
}
我可以在我的ipad屏幕上看到与key1和key2对应的字符串,但不能用于key3,同步代码并没有帮助。
这里是我的问题:
1)诗丽吉处理来自其他分机有什么不同?如果是的话如何将数据传递给我的应用程序?如果没有我不正确地使用UserDefaults?
2)有没有更好的方式来处理应用程序和它的扩展之间的IPC,我只需要在它们之间传递简单的字符串消息。
使用SWIFT 3.0和Xcode中8.2.1