2009-12-11 4 views
6

Ich habe einige Daten in Core Data gespeichert, die in etwa so aussehen:Können Sie "select unique name from ..." mit NSPredate angeben?

| Name | Kennung | other_stuff |

Ich muss die Namen in einem UITableView anzeigen, aber ich möchte nur die Namen mit eindeutigen Namen-Bezeichner-Paare anzeigen. Also für:

John | 3 | foo 
Betty | 4 | foo 
Betty | 4 | bar 

Ich möchte nur die Abfrage, John, Betty zurückzukehren. Etwas wie "wählen Sie eindeutigen Namen, Bezeichner aus Tabelle."

Gibt es eine Möglichkeit, dies mit NSPredate zu tun, oder muss ich die enttippten Felder in einen anderen Container füllen und dann danach suchen?

Antwort

10

Core-Daten sind ein Objekt Graph-Management-Framework, das zufälligerweise (optional) das Objektdiagramm in einem persistenten SQL-Speicher speichert. Es gibt keine Möglichkeit, Objektattribute, nur Objekte, abzufragen. Sie können die Instanzen dann abfragen, aus dem sich ergebenden Array:

NSArray *instances; //from -[NSManagedObject executeFetchRequest:error:] 
NSArray *uniqueNames = [instances valueForKeyPath:@"@distinctUnionOfObjects.name"]; 

den Namen unter der Annahme, in der name Eigenschaft ist.

Wenn Sie möchten, dass jeder Benutzer einen Namen, eine ID und mehrere {foo, bar, ...} hat, sollten Sie die Situation als Benutzerentität mit Namen und ID und einem To-Many modellieren Beziehung zu einer Entität, die foo/bar/etc darstellt.

Weitere Informationen zum @distinctUnionOfObjects (und anderen Erfassungsoperatoren) finden Sie im Abschnitt Collection Operators des Key Value Coding Guide.

Verwandte Themen