Swift 与AppGroup共享数据
我想将UIKit文件中的一个变量共享到使用SwiftUI创建的小部件扩展名。 请看J Arango的答案 但是我不明白最后一部分。 我必须使用Swift 与AppGroup共享数据,swift,swiftui,widgetkit,Swift,Swiftui,Widgetkit,我想将UIKit文件中的一个变量共享到使用SwiftUI创建的小部件扩展名。 请看J Arango的答案 但是我不明白最后一部分。 我必须使用导入我的共享对象 所以我这样做了: import MySharedObject struct testing { let mySharedObject = MySharedObject(name: "My Name", lastName: "My Last Name")
导入我的共享对象
所以我这样做了:
import MySharedObject
struct testing {
let mySharedObject = MySharedObject(name: "My Name", lastName: "My Last Name")
do {
let data = try JSONEncoder().encode(mySharedObject)
/// Make sure to use your "App Group" container suite name when saving and retrieving the object from UserDefaults
let container = UserDefaults(suiteName:"group.com.widgetTest.widgetContainer")
container?.setValue(data, forKey: "sharedObject")
/// Used to let the widget extension to reload the timeline
WidgetCenter.shared.reloadAllTimelines()
} catch {
print("Unable to encode WidgetDay: \(error.localizedDescription)")
}
}
但是我得到了以下错误
- 调用中位置#1,#2处的额外参数
- 调用中缺少参数的参数
- 插入:
- 使用
部分的预期声明do
UserDefaults
:UserDefaults
。你为什么需要我的共享对象呢?我必须承认我不明白那个人在解释什么。他正在创建一个文本文件并将数据存储在那里吗?它成功了,谢谢。这比我想象的要简单得多。我用主应用程序作为SwiftUI和小部件作为SwiftUI对它进行了测试。我明天会检查这是否也适用于我的主要应用程序作为故事板和小部件作为SwiftUI。
UserDefaults(suiteName: <your_app_group>)!.set("test", forKey: "test")
let testStr = UserDefaults(suiteName: <your_app_group>)!.string(forKey: "test")