Objective-C Añadir a archivo .Plist / Editar
-
19-09-2019 - |
Pregunta
¿Tiene WriteToFile: atómicamente, añadir datos a un .Plist existente? ¿Es posible modificar un valor en un .Plist? En caso de que la aplicación se vuelve a compilar surta efecto el cambio?
Tengo una lista .Plist costumbre en mi aplicación. La estructura es la siguiente:
<array>
<dict>
<key>Title</key>
<string>MyTitle</string>
<key>Measurement</key>
<dict>
<key>prop1</key>
<real>28.86392</real>
<key>prop2</key>
<real>75.12451</real>
</dict>
<key>Distance</key>
<dict>
<key>prop3</key>
<real>37.49229</real>
<key>prop4</key>
<real>58.64502</real>
</dict>
</dict>
</array>
La variable de matriz tiene múltiples elementos con misma estructura. Tengo que añadir elementos a la .Plist existente. ¿Es eso posible? Puedo escribir una UIView para hacer precisamente eso, de ser así.
* EDITAR - OK, yo sólo traté de WriteToFile la esperanza de que al menos sobrescribir si no agregar a ella. Extrañamente, el código siguiente selecciona camino diferente mientras que la lectura y la escritura.
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
El archivo .Plist está en mi proyecto. Puedo leer de él. Cuando escribo a ella, que es la creación de un archivo plist y guardarlo en mi /users/.../library/! ¿Esto tiene sentido para alguien?
Solución
Yo asumiría que el plist
read only
que viene con la aplicación se supone - que está dentro del paquete de aplicación
Todas las actualizaciones se almacenan en el directorio específico del usuario, de modo que cada usuario tendría sus propias modificaciones específicas.
Otros consejos
Por supuesto que puede crear y escribir su propio archivo plist. Por NSArray *arrayPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *userFile=[[arrayPath objectAtIndex:0] stringByAppendingString:@"/whatever.plist"];
, puede escribir / editarlo.
Pero también tengo la misma pregunta: ¿Cómo puedo editar el valor con una clave particular, en lugar de sobrescribir el archivo completo .Plist
por ejemplo. si quiero cambiar las "MyTitle" valor de la clave "Título", en: <key>Title</key>
<string>MyTitle</string>
para "Girasol", ¿cómo puedo hacer que a partir del código