2013-04-18 20 views
9

Recentemente, sto imparando su NSKeyedArchiver e NSKeyedUnarchiver. Ho scoperto che ci sono tre modi per archiviare un array e sto cercando di capire le differenze.Differenze con archiveRootObject: toFile: e writeToFile:

1.Using archiveRootObject:toFile:

[NSKeyedArchiver archiveRootObject:testArray toFile:filePath]; 

dati 2.Get da archivedDataWithRootObject: e scrivere su file

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

3.Using encodeObject: per ottenere dati

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

Dopo aver provato, ho scoperto che tutti i metodi sopra funzionano perfettamente e scrivono lo stesso contenuto nel file.

Q1: Qual è la differenza con tutte le modalità sopra indicate?

Q2: Posso utilizzare NSData nel 3 ° modo?

risposta

5

Il primo non consente di scegliere cosa fare con i dati. Andrà a un file. Io uso il secondo modo per, ad esempio, inviare dati attraverso una connessione di rete. È più flessibile Il terzo modo fa la stessa cosa, tranne che puoi inserire singoli oggetti. Non sono sicuro che funzionerà con un array così com'è, ma potrebbe. È ancora più flessibile, quindi non è necessario avere un array o un dizionario pronto per questo.

Questo è praticamente tutto. Si tratta di convenienza e flessibilità.