Speichern von Integer 32 in Core Data spinnt herum

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Speichern von Integer 32 in Core Data spinnt herum

    Hallo alle zusammen,

    ich übe mich gerade in die Core Data ein und versuche ganz einfach Integer (32) darin zu speichern. Bei einem Methodenaufruf soll ein Integer, in Core Data gespeichert, um 1 erhöht werden. Lasse ich es jedoch die Methode einige Male durchlaufen und gebe den Integer aus der Core Data aus, so erscheinnen recht "willkürliche" Werte, die niemals von einer +1 Operation stammen könnten. Ich weiß einfach nicht mehr weiter. Habe schon jegliche Integer "Arten" ausprobiert....

    Vielleicht könnt ihr mir ja helfen. Hier noch einige meiner Codestücke:

    Quellcode

    1. -(void) updateAllScore:(NGFExercise*) exercise isRight: (BOOL) isRight
    2. {
    3. int addvalue = 1;
    4. if(!isRight) addvalue = -1;
    5. Scores *scoreObject = [self getScoreObject];
    6. if([exercise.type isEqual: ADDITION]) scoreObject.scoreAdd = [NSNumber numberWithInt: [self getAdditionScore] + addvalue];
    7. [self saveCoreData];
    8. NSLog(@"%i", [self getAdditionScore]);
    9. }
    10. -(int) getAdditionScore
    11. {
    12. Scores *scoreObject = [self getScoreObject];
    13. return (int) scoreObject.scoreAdd;
    14. }
    15. -(Scores *) getScoreObject
    16. {
    17. //Wichtiger Codeblock zum Funktionieren
    18. id delegate = [[UIApplication sharedApplication] delegate];
    19. self.managedObjectContext = [delegate managedObjectContext];
    20. ///////////
    21. NSManagedObjectContext *context = [self managedObjectContext];
    22. NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    23. NSEntityDescription *entity = [NSEntityDescription entityForName:@"Scores"
    24. inManagedObjectContext:context];
    25. [fetchRequest setEntity:entity];
    26. NSError *error = [[NSError alloc]init];
    27. NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
    28. Scores *scoresObject = [fetchedObjects objectAtIndex:0];
    29. return scoresObject;
    30. }
    31. -(void) saveCoreData
    32. {
    33. NSError *error = [[NSError alloc]init];
    34. NSManagedObjectContext *context = [self managedObjectContext];
    35. if (![context save:&error]) {
    36. NSLog(@"Konnte nicht speichern in saveCoreData von NGFScoreHandler %@", [error localizedDescription]);
    37. }
    38. }
    Alles anzeigen


    Vielen vielen Dank.

    Nils
  • MCDan schrieb:

    Hast Du den o.a. Source Code nach dem ersten Post jetzt schon geändert?


    Ja habe ich. Aber das hat auch irgendwie nicht geklappt. Ich arbeite mich jetzt noch einmal Schritt für Schritt ein und versuche es nochmal neu zu coden und Zeile für Zeile zu debuggen.
    Wenn ich dann nochmal auf Probleme stoße, melde ich mich nochmal.

    Danke, Nils.
  • Nilsfrank99 schrieb:

    MCDan schrieb:

    Hast Du den o.a. Source Code nach dem ersten Post jetzt schon geändert?

    Ja habe ich.

    Hier im ersten Beitrag oder bei dir auf der Festplatte? Weil Claus' erste Antwort passt nicht zu dem Code, der da steht.

    Nilsfrank99 schrieb:

    Aber das hat auch irgendwie nicht geklappt. Ich arbeite mich jetzt noch einmal Schritt für Schritt ein und versuche es nochmal neu zu coden und Zeile für Zeile zu debuggen.

    Das Problem ist, wie gritsch bereits schrieb, die Zeile 16 in dem Code von deinem ersten Beitrag. Da gibst du die Adresse des NSNumber Objekts als int zurück und nicht den int-Wert des NSNumber Objekts.
  • Thallius schrieb:

    Das Problem fäängt schon damit an, dass der Methodenname Mist ist. Die Methode erzeugt ein neues ScorData also müßte sie eigentlich getNewScoreData heissen.

    Gruß

    Claus

    Das wäre kein besserer Name.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?