ios – 在sirikit intent处理程序和app之间传递数据

ios不允许包含应用程序和包含的扩展共享一个公共容器,因此UserDefaults是建议的解决方案.

我尝试将UserDefaults与sirikit intent处理程序一起使用,假设处理程序的行为如下所示:

在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")

在viewDidLoad中的ViewController.swift内部

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)与其他扩展不同的sirikit处理程序?如果是的话如何将数据传递给我的应用程序?如果不是我错误地使用UserDefaults?

2)是否有更好的方法来处理应用程序及其扩展之间的IPC,我只需要在它们之间传递简单的字符串消息.

使用swift 3.0和xcode 8.2.1

最佳答案 检查是否为要从中访问该组的所有目标启用了应用程序组.签入项目 – >你的目标 – > “应用程序组”下的功能.

点赞