Crear archivo Plist desde cadena
-
28-10-2019 - |
Pregunta
Tengo esta cadena:
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Secciones</key>
<array>
<dict>
<key>Uid</key>
<integer>1</integer>
<key>DateInsert</key>
<date>3911-04-15T09:20:40Z</date>
<key>DateModify</key>
<date>3911-04-15T09:20:40Z</date>
<key>Name</key>
<string>Seccion 1</string>
<key>Description</key>
<string>Esta es la sección 1.</string>
</dict>
<dict>
<key>Uid</key>
<integer>2</integer>
<key>DateInsert</key>
<date>3911-04-15T09:20:40Z</date>
<key>DateModify</key>
<date>3911-04-15T09:20:40Z</date>
<key>Name</key>
<string>Seccion 2</string>
<key>Description</key>
<string>Esta es la sección 2.</string>
</dict>
<dict>
<key>Uid</key>
<integer>3</integer>
<key>DateInsert</key>
<date>3911-04-15T09:20:40Z</date>
<key>DateModify</key>
<date>3911-04-15T09:20:40Z</date>
<key>Name</key>
<string>Seccion 3</string>
<key>Description</key>
<string>Esta es la sección 3.</string>
</dict>
</array>
</dict>
</plist>
Quiero crear un archivo Plist con este contenido. He intentado con esto:
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0];
NSString *fileName = [documentsDirectory stringByAppendingPathComponent: @"sec.plist"];
NSLog(@"%@",documentsDirectory);
NSLog(@"%@",fileName);
//n is my string
[n writeToFile:fileName
atomically:NO
encoding:NSStringEncodingConversionAllowLossy
error:nil];
mi espectáculo de consola:
2011-09-08 18:26:59.999 Catalogo-V1[1071:207] /Users/.../Library/Application Support/iPhone Simulator/4.3/Applications/6D96FC16-D6CB-4A03-A0F5-38A0C0C473C7/Documents
2011-09-08 18:27:00.000 Catalogo-V1[1071:207] /Users/.../Library/Application Support/iPhone Simulator/4.3/Applications/6D96FC16-D6CB-4A03-A0F5-38A0C0C473C7/Documents/sec.plist
Pero no cree ningún archivo.
Solución
Utilizar el
error
parámetro dewriteToFile:atomically:encoding:error:
Método Para retener el error devuelto por la llamada, esto ayudará a depurarUsar
NSUTF8StringEncoding
en vez deNSStringEncodingConversionAllowLossy
(¡Lo cual no es una codificación!)Prefiere usar el
NSPropertyListSerialization
Clase para manipular la serialización de los archivos PLIST si es posible.Es posible que encuentre útil para leer el Guía de programación de la lista de propiedades también
Otros consejos
NSStringEncodingConversionAllowLossy
no es una codificación, usa algo como NSUTF8StringEncoding
en cambio.