2013-04-18 53 views
9

最近,我正在學習NSKeyedArchiver和NSKeyedUnarchiver。我發現有三種方法來存檔數組,我試圖找出差異。與archiveRootObject的差異:toFile:和writeToFile:

1.使用archiveRootObject:toFile:

[NSKeyedArchiver archiveRootObject:testArray toFile:filePath]; 
archivedDataWithRootObject:

2.註冊數據並將其寫入到文件

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:testArray]; 
    [data writeToFile:filePath atomically:YES]; 

3,採用encodeObject:獲取數據

NSMutableData *data = [NSMutableData data]; 
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; 
    [archiver encodeObject:testArray forKey:@"testArray"]; 
    [archiver finishEncoding]; 
    [data writeToFile:path atomically:YES]; 

經過測試,我發現上述所有方法都正常工作,並將相同內容寫入文件。

問題1:上述所有方法有什麼不同?

Q2:我可以在第三種方式使用NSData嗎?

回答

5

第一個不給你選擇如何處理數據。它會去一個文件。例如,我使用第二種方法通過網絡連接發送數據。它更加靈活。除了可以將單個對象放入它之外,第三種方法可以做同樣的事情。我不確定它會如何處理數組,但它可能。它更加靈活,所以你不需要爲它準備一個數組或字典。

就是這樣。這完全取決於方便性和靈活性。