Daten mit AppGroup teilen

Sep 21 2020

Ich möchte eine Variable aus meiner UIKit-Datei für meine mit SwiftUI erstellte Widget-Erweiterung freigeben. Ich bin dem hier gefolgt. Bitte schauen Sie sich die Antwort von J Arango an.

Aber ich verstehe den letzten Teil dort nicht. Ich muss benutzen import MySharedObjects.

Also habe ich das gemacht:

    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)")
       }
}

Aber ich bekomme die folgenden Fehler.

  • Zusätzliches Argument an Position 1, 2 im Anruf
  • Fehlendes Argument für Parameter aus Aufruf
  • Einfügen von: <# Decoder #>
  • erwartete Erklärung, wo ich das doTeil benutze .

Antworten

2 pawello2222 Sep 21 2020 at 19:35
  1. Speichern Sie Daten UserDefaultsin Ihrer Haupt-App:
UserDefaults(suiteName: <your_app_group>)!.set("test", forKey: "test")
  1. Lesen Sie Daten aus UserDefaultsIhrem Widget:
let testStr = UserDefaults(suiteName: <your_app_group>)!.string(forKey: "test")

Wenn Sie andere Typen speichern möchten, siehe:

  • Wie kann ich UserDefaults in Swift verwenden?