2010-03-15 12 views
7

Quando uso NSKeyedArchiver è il dato che è scritto un * .plist, ho visto alcuni esempi in cui le persone hanno il file di output in basso come * .txt o anche senza un'estensione?Quale formato salva NSKeyedArchiver?

-(void)saveCore { 
    NSMutableData *data = [[NSMutableData alloc] init]; 
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; 
    [archiver encodeObject:reactorCore forKey:@"CORE"]; 
    [archiver finishEncoding]; 
    [data writeToFile:[self dataFilePath] atomically:YES]; 

    [data release]; 
    [archiver release]; 
} 

Gary

+0

@JasonCoco Non vero. Vedi risposta di Ole Begemann. –

+0

@JonaChristopherSahnwaldt È vero. I dati generati sono dati binari plist e il modo in cui è strutturato è completamente proprietario. Sì, è possibile convertire questi dati plist binari in qualcos'altro, come un plist xml, ma non rende il modo in cui il plist è organizzato meno proprietario, né significa che si può assumere qualsiasi dato modulo. Potrebbe facilmente cambiare tra le versioni, se lo avessero voluto e in passato. –

+0

@JasonCoco Non capisco cosa intendi con 'binary plist'. Pensavo intendessi un formato di file binario e XML non è un formato binario. E per quanto ne so, il formato XML plist non è stato modificato dalla sua ideazione. –

risposta

14

È possibile utilizzare qualsiasi estensione del file che si desidera. Non è completamente correlato al formato di file effettivo utilizzato da NSKeyedArchiver. Per impostazione predefinita, l'archivio sarà in formato binario, ma se si imposta la proprietà outputFormat dell'archiviatore su NSPropertyListXMLFormat_v1_0, verrà scritto un plist XML. E quando lo fai, dovresti probabilmente dare al file un'estensione .plist o .xml.

+0

Grazie, Ole, molto apprezzato. – fuzzygoat

+1

Questo è corretto al 100%. Si noti che se si apre un file plist binario in TextMate, questo verrà automaticamente convertito in ASCII (con "!!! BINARY PROPERTY LIST WARNING !!!" in alto) .... che potrebbe essere fonte di confusione per uno. –