我想知道是否有办法存储少量数据,而无需使用完整的核心数据API。我只需要在某个地方存储6个“双重”值...最好的方法是什么?
谢谢,Alex。
答案 0 :(得分:24)
核心数据只是存储数据的一种方式,只有当您需要它所做的事情时它才有意义。以下是存储数据的五个不错选项:
使用NSUserDefaults
。 (死简单。)
将数据存储在适当的结构中(例如,NSDictionary
)并将其存储为属性列表。 (非常简单。)
将数据存储在您自己设计的实现NSCoding
的类中,然后使用NSKeyedArchiver
将该类的实例写入文件。 (适用于存储整个对象图形;这基本上就是IB所做的。光可能需要一两个小时才会亮起,但一旦你理解了它,这是一种非常好的读取和写入对象的方法。)
使用Cocoa Touch的文件系统API,特别是NSFileHandle
和NSFileManager
。 (如果您之前曾使用过文件系统,那么从概念上讲很简单。让您完全掌控。)
使用常规的旧POSIX文件系统API。 (最适合现有的Unix代码,或者您也希望在其他平台上编译的代码。)
在您进入其中任何一个之前,请先阅读Apple的 Archives and Serializations Programming Guide , User Defaults Programming Topics 和 File System Programming Guide
答案 1 :(得分:5)
您可以使用NSUserDefaults来完成(http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html)。
-(void)saveToUserDefaults:(NSString*)myString
{
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
if (standardUserDefaults) {
[standardUserDefaults setObject:myString forKey:@"Prefs"];
[standardUserDefaults synchronize];
}
}
-(NSString*)retrieveFromUserDefaults
{
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSString *val = nil;
if (standardUserDefaults)
val = [standardUserDefaults objectForKey:@"Prefs"];
return val;
}
答案 2 :(得分:4)
在不使用某些较大的API的情况下存储少量数据的最简单方法是NSUserDefaults类。它的设置和使用非常简单。