您需要使用UserDefaults(suiteName:)
而不是UserDefaults.standard
与 AppGroup 一起使用。UserDefaults.standard
只能在它所在的应用程序中访问,它不适用于您可能制作的任何扩展程序或其他应用程序。这就是为什么您必须使用 AppGroup。
创建应用程序组后(您可以在“签名和功能”部分中执行此操作),您应该有一个suiteName
类似的应用程序组:
group.com.my.app.identifier
Run Code Online (Sandbox Code Playgroud)
然后,在应用程序的 UIKit 部分中,您可以按以下方式设置 AppGroup 的 UserDefaults 中的值:
if let userDefaults = UserDefaults(suiteName: "group.com.my.app.identifier") {
userDefaults.setValue("value to save", forKey: "Key")
}
Run Code Online (Sandbox Code Playgroud)
读回它们你可以使用:
if let userDefaults = UserDefaults(suiteName: "group.com.my.app.identifier") {
let value = userDefaults.string(forKey: "Key")
}
Run Code Online (Sandbox Code Playgroud)
由于 Widget 将用 SwiftUI 编写,因此您可以使用属性包装器@AppStorage
来访问值:
@AppStorage("Key", store: UserDefaults(suiteName: "group.com.my.app.identifier"))
var value: String = ""
Run Code Online (Sandbox Code Playgroud)
如果您已经存储了要在其中使用的值,UserDefaults.standard
则需要将它们复制到UserDefaults(suitName:)
.
归档时间: |
|
查看次数: |
2485 次 |
最近记录: |