iOS只存储了一点数据

时间:2011-09-14 13:58:35

标签: ios iphone cocoa-touch

我想知道是否有办法存储少量数据,而无需使用完整的核心数据API。我只需要在某个地方存储6个“双重”值...最好的方法是什么?

谢谢,Alex。

3 个答案:

答案 0 :(得分:24)

核心数据只是存储数据的一种方式,只有当您需要它所做的事情时它才有意义。以下是存储数据的五个不错选项:

  • 使用NSUserDefaults。 (死简单。)

  • 将数据存储在适当的结构中(例如,NSDictionary)并将其存储为属性列表。 (非常简单。)

  • 将数据存储在您自己设计的实现NSCoding的类中,然后使用NSKeyedArchiver将该类的实例写入文件。 (适用于存储整个对象图形;这基本上就是IB所做的。光可能需要一两个小时才会亮起,但一旦你理解了它,这是一种非常好的读取和写入对象的方法。)

  • 使用Cocoa Touch的文件系统API,特别是NSFileHandleNSFileManager。 (如果您之前曾使用过文件系统,那么从概念上讲很简单。让您完全掌控。)

  • 使用常规的旧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类。它的设置和使用非常简单。