2013-04-18 14 views
9

Ostatnio uczę się o NSKeyedArchiver i NSKeyedUnarchiver. Odkryłem, że istnieją trzy sposoby zarchiwizowania tablicy i próbuję rozróżnić różnice.Różnice z archiveRootObject: toFile: and writeToFile:

1. Za pomocà archiveRootObject:toFile:

[NSKeyedArchiver archiveRootObject:testArray toFile:filePath]; 

dane 2.Get z archivedDataWithRootObject: i zapisać go do pliku

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

3.Using encodeObject: aby uzyskać dane

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

Po przetestowaniu okazało się, że wszystkie powyższe sposoby działają poprawnie i zapisują tę samą zawartość do pliku.

Pytanie 1: Jakie są różnice we wszystkich powyższych metodach?

Q2: Czy mogę używać NSData w 3 sposób?

Odpowiedz

5

Pierwsza z nich nie daje wyboru sposobu postępowania z danymi. Przejdzie do pliku. Używam drugiej metody, aby na przykład wysyłać dane przez połączenie sieciowe. Jest bardziej elastyczny. Trzeci sposób robi to samo, z wyjątkiem tego, że można w nim umieścić pojedyncze obiekty. Nie jestem pewien, czy będzie działał z tablicą w takiej formie, w jakiej się znajduje, ale może. Jest jeszcze bardziej elastyczny, więc nie musisz mieć przygotowanej tablicy lub słownika.

To wszystko. Chodzi o wygodę i elastyczność.