问题描述
我想将UIKit文件中的一个变量共享给使用SwiftUI创建的Widget扩展。 I followed this here.请查看J arango的回答。
但是我不明白那里的最后一部分。
我必须使用import MySharedobjects
。
所以我这样做了:
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
部分的预期声明。
解决方法
- 在主应用程序中将数据保存到
public bool _isServerAvailableLabelVisible = false; public bool IsServerAvailableLabelVisible { get { return _isServerAvailableLabelVisible; } set { SetProperty(ref _isServerAvailableLabelVisible,value); } }
:
UserDefaults
- 从小部件中的
UserDefaults(suiteName: <your_app_group>)!.set("test",forKey: "test")
读取数据:
UserDefaults
如果要保存其他类型,请参见: