2012-01-23 11 views
5

He estado usando un plist para almacenar datos en mi aplicación. Pude escribir y leer desde el plist sin ningún problema. Creé este plist en XCode, agregando las filas de números, diccionarios y arreglos yo mismo. Sin embargo, me gustaría poder restablecer el plist al estado original, y debe haber una forma más fácil de hacer esto que escribir un valor 0 o nil en cada entrada del plist. Entonces, ¿cuál es la forma más fácil de restablecer el plist a su estado predeterminado inicial?¿Cómo elimino los datos en un plist creado en XCode?

Respuesta

10

Lo más simple sería la de eliminar el archivo usando NSFileManager, así:

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

O si usted no quiere hacer eso, suponiendo que el plist es un diccionario, sólo tiene que cargar el de su paquete de aplicaciones y luego sobreponen a los datos en sus documentos, así:

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

que sobrescribirá el archivo guardado con el archivo original.

+0

Gracias eso era lo que estaba buscando. Supongo que solo necesitaba que alguien me lo explicara directamente. – gurooj

+0

¿Es posible eliminar una sola entrada de un archivo plist? Básicamente estoy almacenando fechas en mi plist y quiero que, como la fecha almacenada, el plist caduque, esa fecha/entrada debe eliminarse del plist y el plist debe obtener refrescado. ¿Cómo puedo hacer eso? –

+1

No lo eliminaría de la lista directamente, lo eliminaría del diccionario haciendo un NSMutableDictionary usando el método mutableCopy y luego usando el método removeObjectForKey :. Luego solo guarde el nuevo diccionario sobre la parte superior de la lista anterior. –

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

También podría tratar simplemente de cambiar el nombre de su Plist. Eso es lo menos trabajo, creo.

+0

Entonces, ¿qué pasa con el anterior? –

Cuestiones relacionadas