NSUserDefaults与NSCoding

时间:2014-04-11 17:19:07

标签: ios objective-c nsuserdefaults nscoding

从我的应用中保存少量数据时,最好使用NSUserDefaults还是NSCoding? 现在我使用NSCoding(encodeWithCoder / initWithCoder等),但似乎NSUserDefaults可能更简单。 我的总数据是关于各种Ints / Strings / MutableArray,总共只有几十个。

2 个答案:

答案 0 :(得分:6)

我假设NSCoding表示“在使用NSCoding API序列化文件后将对象保存到文件”。虽然这两种方法对原始数据类型都有效,但是一旦开始序列化具有复杂结构的对象,NSUserDefaults方法就会变得更加困难。

相比之下,将NSCoding类的数据保存到文件中可以在对象结构方面提供高度的灵活性。如果您知道将来不需要这种灵活性,请使用NSUserDefaults;如果您不确定,请留下文件。

答案 1 :(得分:0)

我更喜欢使用以编程方式创建的plist文件

NSString *appFile;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    appFile = [documentsDirectory stringByAppendingPathComponent:@"myFile"];
    //this creates the file path


    NSDictionary* tempDict = [[NSDictionary alloc]initWithContentsOfFile:appFile];
    //this gets the data from storage

    [tempDict writeToFile:appFile atomically:YES];
    //this updates the data to storage