与 AppGroup 共享数据

sub*_*ner 2 swift widgetkit swiftui

我想将一个变量从我的 UIKit 文件共享到我用 SwiftUI 创建的小部件扩展。 我跟着这个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)")
       }
}
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误。

  • 调用中位置 #1、#2 的额外参数
  • 缺少调用参数的参数
  • 插入自:<#Decoder#>
  • 我使用do零件的预期声明。

paw*_*222 5

  1. 将数据保存到UserDefaults您的主应用程序中:
UserDefaults(suiteName: <your_app_group>)!.set("test", forKey: "test")
Run Code Online (Sandbox Code Playgroud)
  1. UserDefaults您的小部件中读取数据:
let testStr = UserDefaults(suiteName: <your_app_group>)!.string(forKey: "test")
Run Code Online (Sandbox Code Playgroud)

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