Frage

Im folgenden Code versuche ich, Daten aus einem Plist zu lesen:

 -(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];
        }

    }

Wenn ich versuche, "SavedObject.Value1" festzulegen, bekomme ich einen Fehler "exc_bad_access".

Mir ist klar, dass dies sehr wahrscheinlich eine grundlegende Speicherverwaltung oder Zeiger-/Objekt -Art von Verwirrung ist, aber ich lerne immer noch. Ich hoffe, jemand kann mir hier helfen. Mit freundlichen Grüßen Sjakelien

War es hilfreich?

Lösung

Sie haben nicht initialisiert savedObject Zu der Zeit, als Sie die festlegen value1 Eigentum. Sie müssen hinzufügen:

savedObject = [[myCustomObject alloc] init];

vor deinem for Schleife, damit es ein gültiges Objekt ist, auf das Sie Eigenschaften festlegen können.

Andere Tipps

Ich sehe nicht mutableArrayValueForKey in NSUserDefaults. Versuchen arrayForKey: Stattdessen gibt das dir das NSArray*.

Scheint, dass die Werte zurückgegeben werden defaults sind unveränderlich (machen Sie Sinn, wenn Sie Sachen aus der Datei erhalten).

Überprüfen Sie den zurückgegebenen Wert von mutableArrayValueForKey, Ich vermute, es ist Null.

Beim zweiten Blick macht Ihr Code nicht viel Sinn. Zu keinem Zeitpunkt zuordnen Sie SavedObjects zu, aber Sie stecken es wiederholt in ein Array ein. Selbst die Art und Weise, wie Sie die Werte extrahieren, scheint nicht korrekt zu sein.

Ich würde empfehlen, die Referenz von NsuserDefautls in Apple -Dokumentation zu betrachten, es gibt Beispiele für die grundlegende Verwendung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top