Обмен данными с AppGroup
Sep 21 2020
Я хочу поделиться одной переменной из моего файла UIKit с моим расширением виджета, созданным с помощью SwiftUI. Я следил за этим здесь. Пожалуйста, посмотрите ответ Дж. Аранго.
Но я не понимаю последней части. Я должен использовать import MySharedObjects.
Итак, я сделал это:
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)")
}
}
Но получаю следующие ошибки.
- Дополнительный аргумент в позиции # 1, # 2 в вызове
- Отсутствует аргумент для параметра из вызова
- вставить из: <# Декодер #>
- ожидаемое объявление, в котором я использую
doдеталь.
Ответы
2 pawello2222 Sep 21 2020 at 19:35
- Сохраните данные
UserDefaultsв главном приложении:
UserDefaults(suiteName: <your_app_group>)!.set("test", forKey: "test")
- Считайте данные
UserDefaultsв своем виджете:
let testStr = UserDefaults(suiteName: <your_app_group>)!.string(forKey: "test")
Если вы хотите сохранить другие типы, см.:
- Как я могу использовать UserDefaults в Swift?