[英]UserDefaults have different values within same app group
我有App + Extension,我做了這樣的共享存儲
extension UserDefaults {
static let suiteName = "group.myApp"
static let extensions = UserDefaults(suiteName: suiteName)!
private enum Keys {
static let personNames = "personNames"
}
var personNames: [String] {
get {
guard let array = UserDefaults.extensions.array(forKey: Keys.personNames) as? [String] else {
return []
}
return array
}
set {
UserDefaults.extensions.setValue(newValue, forKeyPath: Keys.personNames)
}
}}
但是當我調試應用程序時,我看到內存地址A和正確的值(因為我通過Main app放置了值,但是當我調試擴展程序時,我的內存地址為B ,內部沒有值。
我在Main和Extension應用程序上都使用了相同的AppGroup,並且我訪問了這樣的數據
let personNames = UserDefaults.extensions.personNames
我使用免費的Apple Id帳戶是否有問題? 我可以使用此帳戶創建群組,因此我對此表示懷疑。
編輯:
是的,您可能需要一個付費的Apple開發人員帳戶,因為您必須啟用與您的應用程序ID相關聯的應用程序組功能。
原始答案:
您可能需要調用synchronize()
將數據立即寫入磁盤。
var personNames: [String] {
get {
guard let array = UserDefaults.extensions.array(forKey: Keys.personNames) as? [String] else {
return []
}
return array
}
set {
UserDefaults.extensions.setValue(newValue, forKeyPath: Keys.personNames)
UserDefaults.extensions.synchronize()
}
}}
好的,我找到了解決方案。 我以goup.com.company.appName.sharedStorage格式創建了一個新組,並且將它用作suitName,並且一切正常。
因此,可能是由於有免費的Apple帳戶導致創建應用組時出現了問題(因為它是自動的),或者可能是因為group.appName格式無效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.