Pergunta

No código a seguir, tento ler dados de um arquivo 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 alguma forma, quando eu tentar definir "savedObject.valor1", eu recebo um erro "EXC_BAD_ACCESS".

Eu percebo isso, é bastante provável básicos, gerenciamento de memória, ou o ponteiro de objeto/tipo de confusão, mas eu ainda estou aprendendo.Espero que alguém possa me ajudar aqui.Melhores cumprimentos Sjakelien

Foi útil?

Solução

Você não inicializou savedObject no momento em que você define o value1 propriedade. Você precisará adicionar:

savedObject = [[myCustomObject alloc] init];

antes do seu for Loop para que seja um objeto válido em que você possa definir propriedades.

Outras dicas

Eu não vejo mutableArrayValueForKey no NSUserDefaults.Tente arrayForKey: em vez disso, o que vai dar NSArray*.

Parece que os valores retornados de defaults são imutáveis (faz sentido porque você está recebendo material de arquivo).

Verifique o valor devolvido de mutableArrayValueForKey, Eu suspeito que é nil.

No segundo olhar o seu código não faz muito sentido.Em nenhum momento você alocar savedObjects mas você inserir repetidamente em matriz.Até mesmo a maneira que você está extraindo os valores não parecem corretas.

Gostaria de sugerir olhando NSUserDefautls referência a documentação da Apple, tem exemplos de uso básico.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top