Ich fand heraus, dass Core Data im Grunde eine SQLite-Datenbank ist. Jede Entität ist eine separate Tabelle. Es gibt auch Tabellen, die keine Entitäten sind, einschließlich Z_METADATA
, Z_MODELCACHE
und Z_PRIMARYKEY
. Ich weiß nicht, was sie tun.Wie kann ich den Wert des Primärschlüssels eines NSManagedObject erhalten?
Wie auch immer, ich sah, dass die Felder der "Entity Tables" in etwa die gleichen wie die Eigenschaften, die ich im Datenmodell hinzugefügt habe, plus ein paar Extras. Zum Beispiel, wenn meine Entität nur eine Eigenschaft namens date
hat. Die Tabelle wird ein Feld ZDATE
sowie Z_PK
, Z_ENT
und Z_OPT
haben.
Also scheinbar hat jede Entität einen Primärschlüssel, der im Z_PK
Feld gespeichert ist! Ich möchte den Wert dieses Primärschlüssels eines bestimmten erhalten. Und ich möchte die Datenbank nach einem NSManagedObject
fragen, das einen spezifischen Primärschlüssel hat.
Also im Grunde so etwas wie diese:
let pk = myManagedObject.primaryKey
// the below should return myManagedObject
managedObjContext.objectWithPrimaryKey(someEntityDescription, pk)
Ich suchte die Dokumentation für NSManagedObject
und sah ein objectID
. Aber ich glaube nicht, dass das so ist, oder?
Ich glaube, Sie beziehen sich auf Objekt-ID, wenn Sie Primärschlüssel sagen .. check out http://stackoverflow.com/questions/901640/core-data-primary-key –