在iPhone上保存数据的最佳方法

时间:2008-11-20 23:44:06

标签: iphone objective-c

我正在编写一个iPhone应用程序,需要保存我的应用程序状态(5K左右)。

我主要担心的是数据在升级过程中持续存在。我使用的一些应用程序显然错了,我宁愿不这样做!

7 个答案:

答案 0 :(得分:30)

要保存状态,NSUserDefaults是可行的方法。我相信大多数(如果不是全部)应用程序数据实例在升级后被删除是由于AppStore上的问题。它们可能与数据格式更改有关,但如果您只使用NSUserDefaults和标准的plist-storable对象(NSString,NSDictionary,NSNumber,NSArray,NSNumber和基元),那么您应该是安全的。

答案 1 :(得分:13)

有一种简单的方法可以做到这一点 保存:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:@"TextToSave" forKey:@"keyToFindText"];

加载:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *textToLoad = [prefs stringForKey:@"keyToFindText"];

重要的是,您不会在NSUserDefaults中存储非常大的值。如果你这样做,苹果审查有可能遇到麻烦。

通常,用户默认值用于存储短键和首选项,例如用户音量级别,他们想要使用游戏中心,还是发送崩溃日志。

答案 2 :(得分:6)

这实际上取决于你正在做什么和你的需求。

如果是少量数据,NSUserDefaults是一个很好的方法。您还可以将字典或数组保存到应用程序文档文件夹,然后在启动时重新加载该文件。

SQLite很不错,但除非你有很多你要查询的数据,否则它只是保存状态的顶部。

答案 3 :(得分:4)

我使用sqlite存储所有应用程序数据和首选项。要确保更新不擦除数据,请确保sqlite文件存储在应用程序的Documents目录中,而不会被升级覆盖。 Apple提供的一些示例代码(我认为“SQLite Books”)有代码来处理这个问题。

答案 4 :(得分:2)

对于少量数据NSUserDefaults是一个完美的解决方案,如果你需要临时查询数据sqlite是要走的路。这两种解决方案非常适合在设备上存储数据,如果您需要更多的灵活性和功能,可以考虑远程数据,即Web服务和服务器数据库。

答案 5 :(得分:1)

Here是一个讨论的链接,它提供了一个很好的示例,说明如何访问您的数据以及哪种类型的存储方案在某些情况下会更有益。 @Ben Gottlieb的解决方案是目标,我只是认为这个问题会增加额外的资源。希望这有帮助!

答案 6 :(得分:0)

保存状态(数据,应用程序信息等)的最常用方法是使用Sqlite3。我不确定更新会如何擦除它,但更新过程可能会覆盖数据文件。

另一种选择是使用UserPrefs(NSUserDefaults)。同样,我不确定最大尺寸,或者即使它适合您需要保留的数据。