2012-04-17 72 views
0

我想弄清楚保存我的数据的最佳方式。ios保存plist vs 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视频。是否有关于我应该使用这两种文件存储方法中的哪一种的建议?由于

回答

3

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

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

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

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

我也将存储在NSDocumentDirectory中的MP4视频。