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.
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? –
Haben Sie bereits NSFetchedResultsController verwendet? – kirander
Ja, ich habe es getan, aber ich werde es in diesem Fall nicht benutzen. –