Speichern Sie nicht die Arbeit mit den Kern-Daten in Swift

Bekam ich eine Entität namens „Daten“, die enthalten ein Attribut namens „highscore“

Habe ich meine Klasse NSManagedObject :

class Data: NSManagedObject
{
    @NSManaged var highscore: NSNumber
}

Und ich habe versucht, Thesen paar Zeilen :

let managedObjectContext = (UIApplication.sharedApplication().delegate
        as! AppDelegate).managedObjectContext
let entityDescription = NSEntityDescription.entityForName("Data",
        inManagedObjectContext: managedObjectContext)
let data = Data(entity: entityDescription!,
        insertIntoManagedObjectContext: managedObjectContext)

data.highscore = 100

managedObjectContext.insertObject(data)
try! managedObjectContext.save()

print(data.highscore)

Also bei mir läuft meine app, alles funktioniert einwandfrei, die Konsole gibt „100“. Aber wenn ich kommentieren Sie die Zeile Daten.highscore = 100 und I-relaunch meiner app, die Konsole gibt „0“ statt der „100“.
Wo bin ich falsch ?

  • Wenn Sie nur entfernt data.highscore = 100 dann den code, den Sie gezeigt haben würde, erstellen Sie eine neue Instanz von Data mit, dass die Einheit default Wert für highscore. Was versuchen Sie zu tun, was hast du erwartet zu finden?
  • Oh, ich dachte, dass bei dem ersten Start, ich bin Einstellung der Wert für die highscore auf 100 und dann speichern, so dass beim zweiten Start der highscore Wert wäre 100. Also das erstellen einer neuen Instanz der Daten anstelle der änderung gespeicherte ? Das ist nicht das, was ich versuche zu tun,
  • Prüfen Sie, ob Ihr verwalteten Objekts aus dem Kontext des übergeordneten Kontext – kann es sein problem, warum nicht sparen.
InformationsquelleAutor Drakalex | 2016-01-29



2 Replies
  1. 4

    Jedes mal, wenn Sie Ihre app erstellt eine neue Instanz von Data. Das ist es, was diese Zeile macht:

    let data = Data(entity: entityDescription!,
        insertIntoManagedObjectContext: managedObjectContext)

    Ist es nicht, die Core-Daten nicht speichern, es ist, dass Sie nie zu suchen die Daten, die Sie speichern. Wenn Sie möchten, um eine Vorherige Instanz, Sie müssen suchen Sie es in Ihrem permanenten Speicher. Schauen Sie in NSFetchRequest zu finden, die zuvor gespeicherten Daten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.