EXC_BAD_ACCESS пытается прочитать NSArray
-
06-07-2019 - |
Вопрос
В следующем коде я пытаюсь прочитать данные из 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];
}
}
Каким-то образом, когда я пытаюсь установить " saveObject.value1 " ;, я получаю " EXC_BAD_ACCESS " ошибка.
Я понимаю, что это довольно вероятное базовое управление памятью, или путаница указателя / объекта, но я все еще учусь. Я надеюсь, что кто-то может помочь мне здесь. С наилучшими пожеланиями Sjakelien
Решение
Вы не инициализировали saveObject
во время установки свойства value1
. Вам нужно будет добавить:
savedObject = [[myCustomObject alloc] init];
перед вашим циклом for
, чтобы он был допустимым объектом, для которого вы можете установить свойства.
Другие советы
Я не вижу mutableArrayValueForKey
в NSUserDefaults
.
Вместо этого попробуйте arrayForKey:
, который даст вам NSArray *
.
Кажется, что значения, возвращаемые из defaults
, являются неизменяемыми (имеет смысл, когда вы получаете данные из файла).
Проверьте возвращенное значение из mutableArrayValueForKey
, я подозреваю, что оно равно nil.
При втором взгляде ваш код не имеет особого смысла. Ни в коем случае вы не выделяете сохраненные объекты, но вы постоянно вставляете их в массив. Даже то, как вы извлекаете значения, кажется неправильным.
Я бы посоветовал взглянуть на ссылку NSUserDefautls в документации Apple, там приведены примеры базового использования.