use*_*661 5 ios siri swift sirikit
ios 不允许包含的应用程序和包含的扩展共享一个公共容器,因此 UserDefaults 是建议的解决方案。
我尝试将 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")
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)
我可以在 ipad 屏幕上看到与 key1 和 key2 相对应的字符串,但看不到与 key3 相对应的字符串,在代码中添加同步并没有帮助。
这是我的问题:
1) Sirikit 处理程序与其他扩展程序有何不同?如果是,如何将数据传递到我的应用程序?如果不是,我是否错误地使用了 UserDefaults?
2)有没有更好的方法来处理应用程序及其扩展之间的IPC,我只需要在它们之间传递简单的字符串消息。
使用 swift 3.0 和 xcode 8.2.1
| 归档时间: |
|
| 查看次数: |
2742 次 |
| 最近记录: |