2013-04-18 31 views
9

最近NSKeyedArchiverとNSKeyedUnarchiverについて学習しています。私は配列をアーカイブする3つの方法があり、その違いを理解しようとしていることが分かりました。 1.UsingarchiveRootObjectとの相違点:toFile:とwriteToFile:

archiveRootObject:toFile:

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

2.Getデータと、それは

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

3.Using encodeObjectをファイルに書き込め:取得するデータ

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

テストの結果、上のすべての方法がうまく動作し、同じコンテンツをファイルに書き込むことがわかりました。

Q1:上記のすべての方法との違いは何ですか?

Q2:NSDataを3番目の方法で使用できますか?

答えて

5

最初のデータでは、データの処理方法を選択できません。ファイルに移動します。私は、たとえば、ネットワーク接続を介してデータを送信するための第2の方法を使用します。より柔軟性があります。 3番目の方法は、単一のオブジェクトをその中に入れることができるという点を除いて同じことを行います。私はそれが配列のままで動作するかどうかはわかりませんが、それは可能性があります。さらに柔軟なので、配列や辞書を準備する必要はありません。

これはかなりです。これはすべて利便性と柔軟性に関するものです。

関連する問題