Share data between main App and Widget in SwiftUI for iOS 14(在 iOS 14 的 SwiftUI 中,在主 App 和 Widget 之间共享数据)
问题描述
@main
struct ClockWidgetExt: Widget {
private let kind: String = "ClockWidgetExt"
public var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: Provider(), placeholder: PlaceholderView()) { entry in
HomeTestView()
}
.configurationDisplayName("My Widget")
.description("This is an example widget.")
}
}
如何将数据从我的主应用程序获取到小部件?
How can I get data from my Main App to the widget?
推荐答案
您可以为您的 Widget 和 App 添加 AppGroup 功能(here 很好地解释了如何添加它).
You can add the AppGroup capability for both your Widget and App (here is a very good explanation how to add it).
代替
UserDefaults.standard
只需为您的 AppGroup 使用共享的 UserDefaults
:
just use the shared UserDefaults
for your AppGroup:
UserDefaults(suiteName: <your_app_group>)
然后您可以按照this answer中的说明读取/写入数据.
Then you can read/write data like explained in this answer.
通过 AppGroup 授权,您可以访问共享文件容器:
With the AppGroup entitlement you get access to the shared File Container:
let containerURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: <your_app_group>)!
并访问这样的网址:
let someFileURL = containerURL.appendingPathComponent("SomeFile.txt")
然后你可以使用你的共享文件容器,就像这个答案中解释的那样:
Then you can use your shared File Container like explained in this answer:
- 如何通过iOS WidgetKit读取应用创建的文件?
您也可以创建一个共享的 CoreData 容器:
You can create a shared CoreData container as well:
let storeURL = containerURL.appendingPathComponent("DataModel.sqlite")
let description = NSPersistentStoreDescription(url: storeURL)
let container = NSPersistentContainer(name: "DataModel")
container.persistentStoreDescriptions = [description]
container.loadPersistentStores { ... }
然后你可以使用你的共享 CoreData 容器,就像这个答案中解释的那样:
Then you can use your shared CoreData Container like explained in this answer:
- 从 CoreData for iOS 14 小部件中获取数据
这是一个 GitHub 存储库,其中包含不同的 Widget 示例,包括 App Group小部件.
Here is a GitHub repository with different Widget examples including the App Group Widget.
这篇关于在 iOS 14 的 SwiftUI 中,在主 App 和 Widget 之间共享数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在 iOS 14 的 SwiftUI 中,在主 App 和 Widget 之间共享数据


基础教程推荐
- navigator.geolocation.getCurrentPosition 在 Android 浏览器上 2022-01-01
- NSString intValue 不能用于检索电话号码 2022-01-01
- iOS4 创建后台定时器 2022-01-01
- libGDX 从精灵或纹理中获取像素颜色 2022-01-01
- Android:getLastKnownLocation(LocationManager.NETWORK_PROVIDER 2022-01-01
- 通过重定向链接在 Google Play 中打开应用 2022-01-01
- iPhone - 获取给定地点/时区的当前日期和时间并将其与同一地点的另一个日期/时间进行比较的正确方法 2022-01-01
- AdMob 广告未在模拟器中显示 2022-01-01
- Cocos2d iPhone 非矩形精灵触摸检测 2022-01-01
- 如何从 logcat 中删除旧数据? 2022-01-01