2012-04-17 76 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視頻。