如何创建一个单独的 NSUserDefaults(标准除外) - 它不会在扩展之间共享?



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

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

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

最新更新