iPhone App: ¿Dónde pongo un archivo de configuración?
Pregunta
En mi aplicación, tengo un simple archivo ASCII que almacena alguna información de configuración y otra pequeña información que utiliza y cambios. Quiero copiar ese archivo en el iPhone con la aplicación.
1) Por favor, dime donde debería poner este archivo (config.txt) en Xcode. Debería decirlo, en los recursos?
2) ¿Cómo voy a acceder a él en el iPhone? ¿Puedo utilizar
str = [NSString stringWithContentsOfFile:@"config.txt"]
o tengo que utilizar una ruta más completa; En caso afirmativo, ¿qué es esto?
Solución
Debe utilizar NSUserDefaults
para almacenar la configuración del usuario, si la aplicación puede cambiarlos.
La documentación es aquí .
La configuración se almacena como un archivo plist, por lo que puede almacenar instancias NSDictionary
, instancias NSArray
, etc.
Si desea rellenar previamente su NSUserDefaults
con algunos ajustes, puede hacerlo con algo de código como éste:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"defaults" ofType:@"plist"];
NSDictionary *defaultsDict = [NSDictionary dictionaryWithContentsOfFile:filePath];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultsDict];
Es necesario poner un archivo defaults.plist en su carpeta de recursos con la configuración predeterminada, y utilizar el código de seguridad. Corro que el código del método +(void)initialize
del AppDelegate, pero puede elegir otro lugar para llamarlo.
Otros consejos
Se puede poner en Recursos, sí. Para obtener el archivo y, a continuación, sólo tiene que utilizar:
[[NSBundle mainBundle] pathForResource:@"config" ofType:@"txt" inDirectory:@""]]
¿Puedo sugiero NSUserDefaults
para sus ajustes, sin embargo? Esto le ahorrará un montón de problemas en la lectura y escritura de ellos.
Y si desea recuperar los NSUserDefaults , puede hacer lo siguiente:
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
// getting a NSString
NSString *myString = [prefs stringForKey:@"keyToLookupString"];
// getting a NSInteger
NSInteger myInt = [prefs integerForKey:@"integerKey"];
// getting a Float
float myFloat = [prefs floatForKey:@"floatKey"];
Si NSUserDefaults no satisface sus necesidades, puede almacenar la información de configuración en un archivo en el directorio de documentos. Si el archivo no existe en el arranque, a continuación, lea la versión que tiene en Recursos.