使用nsdata保存plist与保存

时间:2012-04-17 17:34:38

标签: ios plist nsdata

我正在试图找出保存数据的最佳方法。

将数据保存到plist时是否重要

NSString *error;
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"yourFile.plist"];
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:rootObj
                                                               format:NSPropertyListXMLFormat_v1_0
                                                     errorDescription:&error];
if(plistData) {
  [plistData writeToFile:plistPath atomically:YES];
}
else {
  NSLog(@"Error : %@",error);
  [error release];
}

或使用NSData

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:FILE_NAME];

[myArray writeToFile:filePath atomically:YES];

我正在处理小型XML文件(我解析为NSDictionaries)和大型MP4视频。我是否应该使用这两种文件存储方法中的哪一种建议?感谢

1 个答案:

答案 0 :(得分:3)

我会去[myArray writeToFile:filePath atomically:YES];(快速,简单,少代码) 但只有当您的NSArrayNSDictionaries仅包含非自我对象时(仅包含NSNumberNSStringNSArray等)。

如果您使用NSPropertyListSerialization,则应该使用NSPropertyListBinaryFormat_v1_0选项。它更快,文件更小。

但您还需要考虑解析XML然后存储到XML Plist中是否有意义。 :) 是。它有意义,因为那样你就可以更轻松地处理它们了。

您还可以考虑解析XML并将其存储在CoreData数据库中。然后它使查询更容易。

我将存储在MPD视频中的NSDocumentDirectory。