2009-09-19 13 views
5

Ich habe das typische Modell in Core Data (für iPhone) mit Abteilungen und Mitarbeitern (Abteilung - >> Mitarbeiter).Kerndaten zu vielen Beziehungen. Sind sie Lazy Load?

Ich möchte nicht alle Mitarbeiter einer Abteilung jedes Mal laden, wenn ich es geladen habe, also dachte ich, ich würde den Mitarbeiter als eine abgerufene Eigenschaft erstellen. Ich dachte, ich könnte einige Prädikat so definieren:

employee.deparmentId = department.departmentId 

aber ich konnte nicht (mit Xcode Grafikeditor).

Nun, einige Beiträge lesen, ich bin geneigt, eine Beziehung zu-viele für Abteilung zu Mitarbeiter (und umgekehrt) zu definieren und zu verwenden.

Meine Frage ist: Sind zu viele Beziehungen Lazy Loading? Oder wird es jedes Mal, wenn ich eine Liste von Abteilungen erstelle (lese), alle meine Mitarbeiter in die "Datenbank" laden?

Vielen Dank im Voraus Gonso

Antwort

14

Nein, Objekte im Zusammenhang mit zu vielen und zu-Eins-Beziehungen sind träge standardmäßig geladen. Wenn Sie jedoch jedes Mal, wenn Sie eine Abteilung abrufen, auf viele von ihnen zugreifen müssen, können Sie Core-Daten aus Leistungsgründen bitten, sie gleichzeitig zu laden (dies wird als Vorabruf bezeichnet). Sie können dies wie folgt tun:

[fetchRequest setReturnsObjectsAsFaults:NO]; 
[fetchRequest setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObjects:@"employees", nil]]; 
+0

im Gegenteil, ich möchte nicht laden Mitarbeiter, es sei denn ich werde mit ihnen arbeiten. Darüber hinaus werde ich meistens nicht alle Mitarbeiter auflisten (d. H. Durch das Set laufen), sondern einen Untersatz erhalten (d. H. Einen Abruf ausführen). Danke. – gonso

Verwandte Themen