Xcode 4.3保存用户数据

时间:2012-06-15 17:54:06

标签: ios objective-c cocoa-touch persistence

我正在制作我的第一个主要的iPhone应用程序,需要一些保存用户数据的建议。我希望保存一个复杂的多维数组,例如一个包含一般信息和更多数据列表的联系人列表。

我一直在互联网上搜索很长时间并发现了许多教程,但它们似乎有点模糊或不清楚。

保存此类数据的最佳做法是什么?如果有人能指导我一个很好的教程。更新应用程序不会丢失已保存的数据至关重要。

由于

2 个答案:

答案 0 :(得分:2)

更新时NSUserDefaults不会丢失数据。

//Writing
[[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"anInt"];
[[NSUserDefaults standardUserDefaults] setDouble:1.2 forKey:@"aDouble"];
[[NSUserDefaults standardUserDefaults] setString:@"aString" forKey:@"aString"];
[[NSUserDefaults standardUserDefaults] synchronize];

//Reading:

int i = [[NSUserDefaults standardUserDefaults] integerForKey:@"anInt"]

答案 1 :(得分:1)

保存在plist文件中:

    // Copying the plist file
    NSError *error;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    path = [[documentsDirectory stringByAppendingPathComponent:@"setting.plist"] retain]; 
    NSFileManager *fileManager = [NSFileManager defaultManager];

    if (![fileManager fileExistsAtPath: path]) 
    {
        NSString *bundle = [[NSBundle mainBundle] pathForResource:@"setting" ofType:@"plist"]; 

        [fileManager copyItemAtPath:bundle toPath: path error:&error]; 
    }

    settings = [[NSMutableDictionary alloc]initWithContentsOfFile:path];

用法:

NSString *keyname = [[settings allKeys]objectAtIndex:0];  // Or indexPath.row
[settings setObject:@"yes" forKey:keyname];  //Setting Value
[settings objectForKey:keyname]; //Getting Value