AppGroup ile Veri Paylaşımı

Sep 21 2020

SwiftUI ile oluşturulan Widget Uzantıma UIKit Dosyamdan bir değişkeni paylaşmak istiyorum. Bunu burada takip ettim. Lütfen J Arango'nun cevabına bakın.

Ama oradaki son kısmı anlamıyorum. Kullanmak zorundayım import MySharedObjects.

Ben de bunu yaptım:

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

Ama aşağıdaki hataları alıyorum.

  • Çağrıda 1., 2. pozisyonda ekstra argüman
  • Çağrıda parametre için eksik bağımsız değişken
  • şuradan ekle: <# Kod Çözücü #>
  • Parçayı kullandığım yerde beklenen beyan do.

Yanıtlar

2 pawello2222 Sep 21 2020 at 19:35
  1. Verileri UserDefaultsana Uygulamanıza kaydedin:
UserDefaults(suiteName: <your_app_group>)!.set("test", forKey: "test")
  1. UserDefaultsWidget'ınızdaki verileri okuyun :
let testStr = UserDefaults(suiteName: <your_app_group>)!.string(forKey: "test")

Diğer türleri kaydetmek istiyorsanız, bakınız:

  • Swift'de UserDefaults'u nasıl kullanabilirim?