iOS - 我应该用什么来保存数据

时间:2011-08-04 08:06:06

标签: iphone ios xcode core-data local-storage

想象一下,您有一个项目列表,这些项目是按日期排序的对象数组(字段:标题,描述,日期)。您从列表中选择一个项目并将其存储在本地设备上。然后,您可以按日期排序的数组(UITableView)中加载存储项目列表。

我认为使用核心数据是过度的。你会用什么以及如何使用? THx中!

4 个答案:

答案 0 :(得分:3)

好吧,我会创建类实现NSCoding并使用NSKeyedArchiver将对象保存到文件中;

您可以直接遍历目录并使用NSKeyedUnarchiver加载所有对象。

答案 1 :(得分:1)

如果您的阵列中没有太多项目,使用某种xml解决方案将是完美的。

plist很棒,因为后端存储是人类可读和可编辑的。还有内置功能,可以毫不费力地将字典和数组转换为plists。例如(writeToFile:atomically:)和(arrayWithContentsOfFile:

请注意,如果您的数组/字典仅包含以下项目,则只能使用这些方法:NSString,NSData,NSArray或NSDictionary。否则你将不得不实施NSCoding,这稍微有点工作。

COre数据有很多好处,因此如果您需要花时间加载/搜索,请考虑切换。

答案 2 :(得分:0)

你可以选择SQLitePlist ......

我更喜欢SQLite,因为数据排序会更容易..

答案 3 :(得分:0)

使用PList是在iphone应用程序中保存数据的最佳和最简单的方法。我会告诉你如何做到这一点。

这是在Plist中保存数据的方法。

//Create String to get data ... 

NSString *typeUrl = [NSString stringWithFormat:@"%@",url.text];

// Create Plist File

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"url.plist"];

NSString *tempurl = [NSString stringWithFormat:@"%@",typeUrl];

// Remove data previously stored in plist file ... 

[[NSFileManager defaultManager]  removeItemAtPath:path error:NULL];

// Create NSMutableArray to Store your string ... 

NSMutableArray urlDetails = [[NSMutableArray alloc] init];  

// Add String to Array ... 
[urlDetails addObject:tempurl];

// Store that array in Plist File ... 

[urlDetails writeToFile:path atomically:YES];

这是从Plist读取数据的方法。

// Find Plist file you created and cheack that file exsist ... 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"password.plist"];
    BOOL passwordfileExists = [[NSFileManager defaultManager] fileExistsAtPath:path];

    // if the file exsist create NSMutableArray and read the value and put that in to the String

    if (passwordfileExists == YES) {
        NSMutableArray* plistDict = [[NSMutableArray alloc] initWithContentsOfFile:path];
        NSString *value = [NSString stringWithFormat:@"%@",[plistDict objectAtIndex:0]];

        // Set that string to the textField

        oldpassText = [NSString stringWithFormat:@"%@",value];
    }

这就是我在Plist文件中保存数据的方式,而且它很容易。我想这会对你有所帮助。