EXC_BAD_ACCESS intentando leer un NSArray
-
06-07-2019 - |
Pregunta
En el siguiente código, intento leer los datos de un plist:
-(void)readPreferences
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray * myAppDefaults = [defaults mutableArrayValueForKey:@"LastList"];
myCustomObject * savedObject;
NSUInteger i;
for (i = 0; i < [myAppDefaults count]; i++)
{
NSArray * thisArray = [myAppDefaults objectAtIndex:i];
savedObject.value1 = [thisArray objectAtIndex:0];
savedObject.value2 = [thisArray objectAtIndex:1];
savedObject.value3 = [thisArray objectAtIndex:2];
savedObject.value4 = [myAppDefaults objectAtIndex:3];
[objectsArray addObject:savedObject];
}
}
De alguna manera, cuando intento establecer " savedObject.value1 " ;, obtengo un " EXC_BAD_ACCESS " error.
Me doy cuenta de que es muy probable que sea una gestión básica de la memoria o un tipo de confusión de puntero / objeto, pero todavía estoy aprendiendo. Espero que alguien pueda ayudarme aquí. Atentamente Sjakelien
Solución
No ha inicializado savedObject
en el momento en que configuró la propiedad value1
. Deberá agregar:
savedObject = [[myCustomObject alloc] init];
antes de su bucle for
para que sea un objeto válido en el que pueda establecer propiedades.
Otros consejos
No veo mutableArrayValueForKey
en NSUserDefaults
.
Pruebe arrayForKey:
en su lugar, eso le dará NSArray *
.
Parece que los valores devueltos por los valores predeterminados de
son inmutables (tiene sentido ya que está obteniendo cosas del archivo).
Verifique el valor devuelto desde mutableArrayValueForKey
, sospecho que es nulo.
En una segunda mirada, su código no tiene mucho sentido. En ningún momento asigna objetos guardados, pero lo inserta repetidamente en la matriz. Incluso la forma en que extrae los valores no parece correcta.
Sugeriría mirar la referencia NSUserDefautls en la documentación de Apple, tiene ejemplos de uso básico.