Berbagi Data dengan AppGroup

Sep 21 2020

Saya ingin membagikan satu variabel dari File UIKit saya ke Ekstensi Widget saya yang dibuat dengan SwiftUI. Saya mengikuti ini di sini. Silakan lihat jawaban dari J Arango.

Tapi saya tidak mengerti bagian terakhir di sana. Saya harus menggunakan import MySharedObjects.

Jadi saya melakukan ini:

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

Tapi saya mendapatkan kesalahan berikut.

  • Argumen tambahan di posisi # 1, # 2 dalam panggilan
  • Argumen yang hilang untuk parameter dari panggilan
  • masukkan dari: <# Decoder #>
  • deklarasi yang diharapkan di mana saya menggunakan dobagian tersebut.

Jawaban

2 pawello2222 Sep 21 2020 at 19:35
  1. Simpan data ke UserDefaultsdalam Aplikasi utama Anda:
UserDefaults(suiteName: <your_app_group>)!.set("test", forKey: "test")
  1. Membaca data dari UserDefaultsdalam Widget Anda:
let testStr = UserDefaults(suiteName: <your_app_group>)!.string(forKey: "test")

Jika Anda ingin menyimpan jenis lain, lihat:

  • Bagaimana saya bisa menggunakan UserDefaults di Swift?