2016-04-04 7 views
0

ich eine einfache Entität mit Attributen wie dieses:Core Data: Gruppieren Entities durch Entitiy Attribut

x  : String 
y  : String 
category: String 
z  : Int 

nichts extra. Ich möchte meine Daten abrufen und nach Kategorie gruppieren. z.B .:

Ich mag ein Wörterbuch empfangen, die wie folgt aussieht:

["Category #1": [Entity], "Category #2": [Entity], etc.] 

Also, im Grunde ich zu einer Gruppe nach Kategorie meiner Entitäten will und es mir geben. NSFetchedResultsController könnte dies für mich tun, aber ich will es uns in diesem Fall nicht. Es ist init-Methode:

init(fetchRequest: NSFetchRequest, managedObjectContext context: NSManagedObjectContext, sectionNameKeyPath: String?, cacheName name: String?) 

Haben sectionNameKeyPath Attribut, das genau das, was ich suche.

Ich versuche, das zu erreichen, NSFetchRequest propertiesToGroupBy Eigenschaft verwenden, aber es gibt mir sehr begrenzte Möglichkeiten, oder ich mache etwas falsch, hier ist mein Versuch:

let sourcesFetchRequest = NSFetchRequest(entityName: "MyEntity") 
sourcesFetchRequest.predicate = NSPredicate(format: "my valid predicate", false) 

sourcesFetchRequest.propertiesToGroupBy = ["category","title"] 
sourcesFetchRequest.resultType = .DictionaryResultType 
sourcesFetchRequest.sortDescriptors = [NSSortDescriptor(key: "category", ascending: true), NSSortDescriptor(key: "title", ascending: true)] 
sourcesFetchRequest.propertiesToFetch = ["category","title"] 

Das Ergebnis wie ist aussieht:

["Category #1":"Title1", "Category #2": "Title2"] 

Es ist nicht was ich will.

Ich habe auch versucht, NSExpression zu verwenden, aber ich mache definitiv etwas falsch. Toller Artikel, der mich dazu führte: http://www.cimgf.com/2015/06/25/core-data-and-aggregate-fetches-in-swift/

Ich hoffe, jemand könnte mir mit dieser "sieht trivial" Aufgabe helfen. Vielen Dank.

Antwort

0

Sieht so aus, als müssten Sie nach einem Index sortieren, den die Kategorie enthält. Sie sollten es in einem neuen Attribut trennen. Und dann nach diesem Index sortieren. Oder erstellen Sie eine neue Entitätskategorie, die Titel und Index enthält und eine Verbindung mit der Beziehung herstellt. Und hole wieder mit dieser Beziehung nach.

+0

Vielen Dank für Ihre Antwort, denken Sie schon darüber nach, aber 'NSFetchedResultsController' kann tun, was ich brauche, denken Sie, wir können nicht dasselbe ohne es tun? –

+0

Haben Sie bereits NSFetchedResultsController verwendet? – kirander

+0

Ja, ich habe es getan, aber ich werde es in diesem Fall nicht benutzen. –