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
- Zapisz dane
UserDefaultsw swojej głównej aplikacji:
UserDefaults(suiteName: <your_app_group>)!.set("test", forKey: "test")
- 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?