Domanda

Nel seguente codice, provo a leggere i dati da 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];
        }

    }

In qualche modo, quando provo a impostare " savedObject.value1 " ;, ottengo un " EXC_BAD_ACCESS " di errore.

Mi rendo conto che è molto probabile una gestione della memoria di base, o un tipo di confusione puntatore / oggetto, ma sto ancora imparando. Spero che qualcuno mi possa aiutare qui. I migliori saluti Sjakelien

È stato utile?

Soluzione

Non hai inizializzato savedObject al momento dell'impostazione della proprietà value1 . Dovrai aggiungere:

savedObject = [[myCustomObject alloc] init];

prima del tuo ciclo per affinché sia ??un oggetto valido su cui puoi impostare le proprietà.

Altri suggerimenti

Non vedo mutableArrayValueForKey in NSUserDefaults . Prova invece arrayForKey: , che ti darà NSArray * .

Sembra che i valori restituiti da valori predefiniti siano immutabili (ha senso quando ricevi cose dal file).

Controlla il valore restituito da mutableArrayValueForKey , sospetto che sia nullo.

Al secondo sguardo il tuo codice non ha molto senso. In nessun momento si allocano gli oggetti salvati ma lo si inserisce ripetutamente nell'array. Anche il modo in cui stai estraendo i valori non sembra corretto.

Suggerirei di consultare il riferimento NSUserDefautls nella documentazione di Apple, che contiene esempi di utilizzo di base.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top