SwiftUI 小部件中的 UIKit UserDefaults
UIKit UserDefaults in SwiftUI widget
希望这是一个简单的问题,但我想知道如何从 SwiftUI 小部件访问保存在我的 UIKit 应用程序中的 UserDefaults 数据?我需要在小部件中显示其中一些数据。
谢谢!
您需要将 UserDefaults(suiteName:)
而不是 UserDefaults.standard
与 AppGroup 一起使用。 UserDefaults.standard
只能在它所在的应用程序中访问,它不适用于您制作的任何扩展程序或其他应用程序。这就是您必须使用 AppGroup 的原因。
创建 AppGroup 后(您可以在“签名和功能”部分执行此操作),您应该有一个 suiteName
,类似于:
group.com.my.app.identifier
然后在应用程序的 UIKit 部分,您可以按以下方式设置 AppGroup 的 UserDefaults 中的值:
if let userDefaults = UserDefaults(suiteName: "group.com.my.app.identifier") {
userDefaults.setValue("value to save", forKey: "Key")
}
你可以使用:
读回它们
if let userDefaults = UserDefaults(suiteName: "group.com.my.app.identifier") {
let value = userDefaults.string(forKey: "Key")
}
由于小部件将在 SwiftUI 中编写,您可以使用 属性 包装器 @AppStorage
来访问值:
@AppStorage("Key", store: UserDefaults(suiteName: "group.com.my.app.identifier"))
var value: String = ""
如果您已经存储了希望在 UserDefaults.standard
中使用的值,则需要将它们复制到 UserDefaults(suitName:)
。
希望这是一个简单的问题,但我想知道如何从 SwiftUI 小部件访问保存在我的 UIKit 应用程序中的 UserDefaults 数据?我需要在小部件中显示其中一些数据。
谢谢!
您需要将 UserDefaults(suiteName:)
而不是 UserDefaults.standard
与 AppGroup 一起使用。 UserDefaults.standard
只能在它所在的应用程序中访问,它不适用于您制作的任何扩展程序或其他应用程序。这就是您必须使用 AppGroup 的原因。
创建 AppGroup 后(您可以在“签名和功能”部分执行此操作),您应该有一个 suiteName
,类似于:
group.com.my.app.identifier
然后在应用程序的 UIKit 部分,您可以按以下方式设置 AppGroup 的 UserDefaults 中的值:
if let userDefaults = UserDefaults(suiteName: "group.com.my.app.identifier") {
userDefaults.setValue("value to save", forKey: "Key")
}
你可以使用:
读回它们if let userDefaults = UserDefaults(suiteName: "group.com.my.app.identifier") {
let value = userDefaults.string(forKey: "Key")
}
由于小部件将在 SwiftUI 中编写,您可以使用 属性 包装器 @AppStorage
来访问值:
@AppStorage("Key", store: UserDefaults(suiteName: "group.com.my.app.identifier"))
var value: String = ""
如果您已经存储了希望在 UserDefaults.standard
中使用的值,则需要将它们复制到 UserDefaults(suitName:)
。