【问题标题】:NSUserDefault getting resetNSUserDefault 被重置
【发布时间】:2014-11-28 10:50:25
【问题描述】:

我有一个 OSX 应用程序,我在其中使用 NSUserDefault 来存储简单值,并且很多人已经开始向我报告,NSUserDefault 中的值被随机删除。

有没有其他人经历过类似的事情?我已经搜索了整个 SO,但我似乎没有找到其他有同样问题的人。

【问题讨论】:

  • 是 OSX 还是 iOS - 请删除不正确的标签。您还需要显示一些代码,否则我们不知道。鉴于 NSUserDefaults 的广泛使用,它不太可能成为 iOS 的问题 - 您正在某处删除或重置值

标签: ios objective-c iphone xcode macos


【解决方案1】:

NSUserDefaults 可以消失,当您更改 BundleIdentifier
因为该文件由您的 bundleId 存储。

它们可以在多个地方找到:

~/Library/Preferences/com.example.myapp.plist
~/Library/SyncedPreferences/com.example.myapp.plist

如果是沙盒

~/Library/Containers/com.example.myapp/Data/Library/Preferences/com.example.myapp.plist
~/Library/Containers/com.example.myapp/Data/Library/SyncedPreferences/com.example.myapp.plist

【讨论】:

  • 如果您更改应用的捆绑 ID,它也会显示为单独的应用。在 iTunesConnect 上创建应用程序后,您将无法更改捆绑 ID。除非捆绑包 ID 匹配,否则您甚至无法将其提交到 App Store。
  • 这让我感到困惑,因为我没有以任何方式更改捆绑 ID(当然,如果我愿意,我也不能),但 NSUserDefaults 似乎仍在重置很多人。这可能还有其他原因吗?顺便说一句,我的应用是沙盒化的。
  • 您可以在 setObject 调用后检查您是否在调用 [[NSUserDefaults standardUserDefaults] synchronize]
  • 我也在调用同步,在设置数据之后。所以我很确定不是那样的。还有其他建议吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多