2012-06-15 26 views
0

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

我一直在寻找网上找了半天,发现很多教程,但他们似乎有点模糊或不清楚。

什么是保存这些数据的最佳实践?如果有人能指导我一个很好的教程。更新应用程序不会丢失保存的数据非常重要。

谢谢

回答

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"] 
+0

谢谢您的回答。绝对NSUserDefaults的似乎是更好的选择! – Patrick

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