Вопрос

В следующем коде я пытаюсь прочитать данные из 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, там приведены примеры базового использования.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top