2014-10-03 23 views
0

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

有没有其他人经历过类似的事情?我搜遍了所有,但我似乎没有找到其他人有同样的问题。

+3

它是OSX或iOS - 请删除不正确的标签。你也需要显示一些代码,否则我们不知道。鉴于如何广泛使用NSUserDefaults是不太可能成为与iOS的问题 - 您正在删除或重置值 – Paulw11 2014-10-03 11:20:07

回答

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 
+0

如果您更改应用程序的包ID,它也显示为一个单独的应用程序。在iTunesConnect上创建应用程序后,您无法更改软件包ID。除非捆绑ID匹配,否则您甚至不能将其提交到App Store。 – 2014-10-03 12:28:40

+0

这就是让我困惑的原因,因为我没有以任何方式更改包ID(当然,如果我想要,我也不能),但仍然NSUserDefaults似乎正在为许多人重置。这有没有其他原因?我的应用程序是沙盒btw。 – 2014-10-03 12:47:25

+0

你可以在setObject调用之后检查你是否正在调用'[[NSUserDefaults standardUserDefaults] synchronize]'。 – l0gg3r 2014-10-03 13:09:50