2014-07-30 10 views
10

(Mit schnellen/Xcode beta 3)Relationship Fehler mit Kerndaten

Ich habe zwei Entitäten in meinem Projekt - eine übergeordnete Einheit, die eine Eins-zu-viele-Beziehung mit ihren Kindern hat. Wenn neue Objekte vor dem Speichern des Kontexts hinzugefügt werden, funktioniert alles einwandfrei. Nach dem Neustart der App und dem erneuten Abrufen des übergeordneten Objekts erhalte ich jedoch einen Beziehungsfehler für alle untergeordneten Objekte. Dies ist, wie ich meinen Kontext bin Sparend:

func saveContext() { 
    var error: NSError? = nil 
    let appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate 
    let context = appDel.managedObjectContext 

    if context == nil { 
     return 
    } 
    if !context.hasChanges { 
     return 
    } 
    if context.save(&error) { 
     return 
    } 

    println("Error saving context: \(error?.localizedDescription)\n\(error?.userInfo)") 
    abort() 
} 

Ich versuchte includesSubentities = true und setReturnsObjectsAsFaults = false ändern, aber es scheint nicht zu helfen. Die meisten Antworten auf das 'Beziehungsfehler'-Problem mit Objective-C schienen setRelationshipKeyPathsForPrefetching zu verwenden, aber es scheint unmöglich zu sein, es mit NSFetchRequest in Swift zu verwenden.

Gibt es etwas, das mir fehlt?

+0

Beziehungsfehler ist in Ordnung. In Bezug auf Kerndaten ist der Fehler nicht das eigentliche Objekt. Es ist noch nicht realisiert worden, also wenn Sie versuchen, auf die Eigenschaften zuzugreifen, geht es und holt vom beständigen Speicher ab und so baut das Objekt auf. – Sandeep

+0

Hey, danke für die Antwort. Leider kann ich diese untergeordneten Objekte nicht abrufen, und der einfache Zugriff darauf funktioniert nicht. –

+0

Zeigen Sie den Code, wie Sie versuchen, den übergeordneten und seine untergeordneten Objekte abzurufen. – zisoft

Antwort

2

Wie GeneratorOfOne sagt, bedeutet der Fehler nur, dass das Objekt noch nicht in den Speicher geholt wurde. Und Sie haben Recht, dass Sie "diese untergeordneten Objekte nicht abrufen können und der einfache Zugriff darauf nicht die Aufgabe erfüllt." Um das Abrufen des Objekts zu veranlassen, müssen Sie eine Eigenschaft des Objekts bewerten, dh tatsächlich einen Wert aus dem Objekt verwenden.

0

Dies ist totally normal. Es gibt Ihnen das Fehlerproblem, wenn Sie das Objekt nicht verwenden, es in den Speicher laden möchten, bis Sie es verwenden