Question

Dans le code suivant, j'essaie de lire les données d'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];
        }

    }

D'une manière ou d'une autre, lorsque j'essaie de définir "SavedObject.value1", un "EXC_BAD_ACCESS" est affiché. erreur.

Je me rends compte que c’est très probablement une gestion de base de la mémoire, ou un type de confusion pointeur / objet, mais j’apprends toujours. J'espère que quelqu'un pourra m'aider ici. Meilleures salutations Sjakelien

Était-ce utile?

La solution

Vous n'avez pas initialisé savedObject au moment où vous définissez la propriété value1 . Vous devrez ajouter:

savedObject = [[myCustomObject alloc] init];

avant votre boucle pour afin que ce soit un objet valide sur lequel vous pouvez définir des propriétés.

Autres conseils

Je ne vois pas mutableArrayValueForKey dans NSUserDefaults . Essayez plutôt arrayForKey: , cela vous donnera NSArray * .

Il semble que les valeurs renvoyées par les valeurs par défaut soient immuables (expliquez-vous que vous récupérez des éléments d'un fichier).

Vérifiez la valeur renvoyée par mutableArrayValueForKey , je soupçonne que ce n'est pas le cas.

À la seconde lecture, votre code n’a pas beaucoup de sens. Vous n'allouez à aucun moment SavedObjects mais vous l'insérez de manière répétée dans un tableau. Même la façon dont vous extrayez les valeurs ne semble pas correcte.

Je suggérerais de consulter la référence NSUserDefautls dans la documentation Apple, qui contient des exemples d'utilisation de base.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top