Я разрабатываю приложение с расширением widgetKit и хочу отображать в виджете данные, созданные пользователем. Как widgetKit может читать файлы, созданные приложением?
Как читать файлы, созданные приложением с помощью iOS WidgetKit?
comment
Этот ответ может быть полезным: Поделиться данными между основным приложением и виджетом в SwiftUI для iOS 14
- person pawello2222   schedule 22.09.2020
Ответы (2)
Вы должны использовать Возможность групп приложений для обмена данными между вашими целями.
Вот хороший руководство от RayWanderlich
person
Daniel E. Salinas
schedule
09.09.2020
Чтобы читать файлы, созданные iOS widgetKit, вам необходимо создать файлы в общем контейнере.
let url = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "yourapp.contents")?.appendingPathComponent("hello")
let data = Data("test read".utf8)
try! data.write(to: url!)
И вы можете читать данные в классе Widget
@main
struct StuffManagerWidget: Widget {
let kind: String = "TestWidget"
var body: some WidgetConfiguration {
IntentConfiguration(kind: kind, intent: TestIntent.self, provider: Provider()){ entry in
WidgetEntryView(entry: entry, string: string)
}
.configurationDisplayName("My Widget")
.description("This is an example widget.")
}
var string: String = {
let url = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "yourapp.contents")?.appendingPathComponent("hello")
let data = try! Data(contentsOf: url!)
let string = String(data: data, encoding: .utf8)!
return string
}()
}
person
Collin Zhang
schedule
09.09.2020
ВНИМАНИЕ: когда вы запускаете приложение на реальном устройстве, вам необходимо настроить общий контейнер в TARGET - ›Capabilities -› App Group как для целевого приложения, так и для целевого виджета.
- person Collin Zhang; 16.09.2020
Я получаю сообщение об ошибке: дополнительный аргумент 'строка' в вызове при написании этого: (запись: запись, строка: строка)
- person submariner; 16.10.2020
Это здорово, но знаете ли вы, может ли виджет читать файлы, созданные приложением? Я храню данные в универсальном контейнере и не могу прочитать их из виджета.
- person CristianMoisei; 20.10.2020
Как я могу очистить данные?
- person Vlad Bruno; 02.07.2021