与AppGroup共享数据

问题描述

我想将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部分的预期声明。

解决方法

  1. 在主应用程序中将数据保存到 public bool _isServerAvailableLabelVisible = false; public bool IsServerAvailableLabelVisible { get { return _isServerAvailableLabelVisible; } set { SetProperty(ref _isServerAvailableLabelVisible,value); } }
UserDefaults
  1. 从小部件中的UserDefaults(suiteName: <your_app_group>)!.set("test",forKey: "test") 读取数据:
UserDefaults

如果要保存其他类型,请参见: