【问题标题】:How to create a separate NSUserDefaults (other than standard) - which is not shared across extensions?如何创建一个单独的 NSUserDefaults(标准除外)- 不是跨扩展共享的?
【发布时间】:2019-12-19 21:38:38
【问题描述】:

我在开发一个写入 NSUserDefaults 的 SDK。有时,客户端的主机应用程序会批量擦除标准 NSUserDefaults,从而践踏 SDK 数据。解决方案似乎是不使用“标准”用户默认值。看来您可以使用构造函数init(suiteName:),但我在其他地方读到,如果您创建这样的实例,它将在主机可能激活的某些条件下跨应用扩展共享(我的 SDK 不知道)。如果它们在应用程序扩展中运行,我需要将它们彼此分开,但更改密钥名称或套件名称不是一个好的选择,因为 SDK 本质上不知道它在哪个位置运行. 有没有办法创建一个行为像标准但不是标准的用户默认实例?

【问题讨论】:

    标签: ios nsuserdefaults


    【解决方案1】:

    应用扩展具有不同的捆绑 ID。因此,您可以使用捆绑 ID 作为 suiteName 的前缀。

    Bundle.main.bundleIdentifier 将为您提供当前可执行文件的捆绑 ID。

    【讨论】:

    • 我很欣赏这个想法。我正在考虑,但希望有更好的方法。我猜那会是一个奇怪的套件名称,两个反向域名拼在一起。
    • 另外,这将使 SDK 对捆绑 ID 的更改敏感。
    猜你喜欢
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多