2012-01-23 15 views
5

Ho utilizzato un plist per archiviare i dati nella mia app. Sono stato in grado di scrivere e leggere dal plist senza alcun problema. Ho creato questo plist in XCode, aggiungendo personalmente le righe di numeri, dizionari e array. Tuttavia, mi piacerebbe essere in grado di ripristinare il plist allo stato originale, e ci deve essere un modo più semplice per farlo rispetto alla scrittura di un valore 0 o nil per ogni voce nel plist. Quindi qual è il modo più semplice per reimpostare il plist al suo stato di default iniziale?Come si cancellano i dati in un plist creato in XCode?

risposta

10

La cosa più semplice sarebbe quella di eliminare il file utilizzando NSFileManager, in questo modo:

[[NSFileManager defaultManager] removeItemAtPath:plistPath error:NULL]; 

Oppure, se non si vuole fare che, assumendo il plist è un dizionario, basta caricare l'uno dal vostro bundle dell'applicazione e quindi sovrascrivere quella nei documenti, in questo modo:

NSDictionary *originalPlist = [NSDictionary dictionaryWithContentsOfFile:bundleFile]; 
[originalPlist writeToFile:documentsFile atomically:YES]; 

che sovrascriverà il file salvato con il file originale.

+0

Grazie, era quello che stavo cercando. Immagino di aver bisogno di qualcuno che me lo spieghi direttamente. – gurooj

+0

È possibile eliminare una singola voce da un file plist? Fondamentalmente sto memorizzando le date nel mio plist e voglio che, poiché la data memorizzata nel plist scade, quella data/voce dovrebbe essere cancellata dal plist e il plist dovrebbe ottenere aggiornato. Come posso farlo? –

+1

Non lo si eliminerebbe direttamente dal plist, lo si eliminerebbe dal dizionario creando un NSMutableDictionary utilizzando il metodo mutableCopy e quindi utilizzando il metodo removeObjectForKey :. Quindi basta salvare il nuovo dizionario nella parte superiore del vecchio plist. –

1
NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:@"mobile-watchlist.plist"]; 
    [fileManager removeItemAtPath: fullPath error:NULL]; 
0

Si potrebbe anche provare a rinominare il proprio Plist. Questo è il minimo lavoro che penso.

+0

Quindi, che dire del vecchio ??? –

Problemi correlati