Compartir datos con AppGroup
Sep 21 2020
Quiero compartir una variable de mi archivo UIKit con mi extensión de widget creada con SwiftUI. Seguí esto aquí. Por favor, mire la respuesta de J Arango.
Pero no entiendo la última parte. Tengo que usar import MySharedObjects.
Entonces hice esto:
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)")
}
}
Pero obtengo los siguientes errores.
- Argumento adicional en la posición # 1, # 2 en la llamada
- Falta un argumento para el parámetro de la llamada
- insertar desde: <# Decoder #>
- declaración esperada donde uso la
dopieza.
Respuestas
2 pawello2222 Sep 21 2020 at 19:35
- Guarde los datos
UserDefaultsen su aplicación principal:
UserDefaults(suiteName: <your_app_group>)!.set("test", forKey: "test")
- Leer datos de
UserDefaultssu widget:
let testStr = UserDefaults(suiteName: <your_app_group>)!.string(forKey: "test")
Si desea guardar otros tipos, consulte:
- ¿Cómo puedo usar UserDefaults en Swift?