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?

¿Fue útil?

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

?
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top