Compartilhando dados com AppGroup
Sep 21 2020
Eu quero compartilhar uma variável de meu arquivo UIKit para minha extensão de widget criada com SwiftUI. Eu acompanhei isso aqui. Veja a resposta de J Arango.
Mas eu não entendo a última parte. Eu tenho que usar import MySharedObjects.
Então eu fiz isso:
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)")
}
}
Mas recebo os seguintes erros.
- Argumento extra na posição # 1, # 2 na chamada
- Argumento ausente para o parâmetro da chamada
- inserir de: <# Decodificador #>
- declaração esperada onde eu uso a
doparte.
Respostas
2 pawello2222 Sep 21 2020 at 19:35
- Salve os dados
UserDefaultsem seu aplicativo principal:
UserDefaults(suiteName: <your_app_group>)!.set("test", forKey: "test")
- Leia os dados
UserDefaultsem seu widget:
let testStr = UserDefaults(suiteName: <your_app_group>)!.string(forKey: "test")
Se você deseja salvar outros tipos, consulte:
- Como posso usar UserDefaults no Swift?
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?