0

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

像这样将数据保存到 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 视频。关于我应该使用这两种文件存储方法中的哪一种,有什么建议吗?谢谢

4

1 回答 1

3

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

如果您使用NSPropertyListSerialization,您可能应该使用 option NSPropertyListBinaryFormat_v1_0。它速度更快,文件大小更小。

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

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

MP4 视频我也会存储在 NSDocumentDirectory 中。

于 2012-04-17T18:07:12.093 回答