UserDefaults在同一应用程序组中具有不同的值

时间:2018-10-22 22:55:55

标签: ios swift userdefaults appgroups

我有App + Extension,我做了这样的共享存储

   let personNames = UserDefaults.extensions.personNames

但是当我调试应用程序时,我看到内存地址 A 和正确的值(因为我通过Main应用程序放置了值,但是当我调试扩展程序时,我的内存地址为 B ,没有值。

我在Main和Extension应用程序上都使用了相同的AppGroup,并且访问了这样的数据

IOptions<JwtSettings>

我使用免费的Apple ID帐户是否有问题?我可以使用此帐户创建组,所以我对此表示怀疑。

2 个答案:

答案 0 :(得分:0)

编辑:
是的,您可能需要一个付费的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()
    }
}}

答案 1 :(得分:0)

好的,我找到了解决方案。我以goup.com.company.appName.sharedStorage格式创建了一个新组,并且将它用作suitName,并且一切正常。

所以也许是因为有免费的Apple帐户,但创建应用组时出现了问题(因为它是自动的),或者是因为group.appName格式无效。