Udostępnianie danych AppGroup

Sep 21 2020

Chcę udostępnić jedną zmienną z mojego pliku UIKit do mojego rozszerzenia widżetu utworzonego za pomocą SwiftUI. Śledziłem to tutaj. Proszę spojrzeć na odpowiedź J. Arango.

Ale nie rozumiem ostatniej części. Muszę użyć import MySharedObjects.

Więc zrobiłem to:

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

Ale otrzymuję następujące błędy.

  • Dodatkowy argument na pozycji nr 1, nr 2 w wywołaniu
  • Brak argumentu dla parametru z wywołania
  • wstaw z: <# Decoder #>
  • oczekiwana deklaracja, w której używam doczęści.

Odpowiedzi

2 pawello2222 Sep 21 2020 at 19:35
  1. Zapisz dane UserDefaultsw swojej głównej aplikacji:
UserDefaults(suiteName: <your_app_group>)!.set("test", forKey: "test")
  1. Odczytaj dane UserDefaultsw swoim widżecie:
let testStr = UserDefaults(suiteName: <your_app_group>)!.string(forKey: "test")

Jeśli chcesz zapisać inne typy, zobacz:

  • Jak mogę używać UserDefaults w Swift?