我有一个具有如下属性的简单实体:
x : String
y : String
category: String
z : Int
没有什么额外的。 我想获取我的数据并按类别对其进行分组。例如:
我想收到一本字典,如下所示:
["Category #1": [Entity], "Category #2": [Entity], etc.]
所以,基本上我想按类别对我的实体进行分组并将其交给我。 NSFetchedResultsController
可以为我做到这一点,但在这种情况下我不想使用它。它的初始化方法:
init(fetchRequest: NSFetchRequest, managedObjectContext context: NSManagedObjectContext, sectionNameKeyPath: String?, cacheName name: String?)
拥有正是我正在寻找的 sectionNameKeyPath
属性。
我正在尝试使用 NSFetchRequest propertiesToGroupBy
属性来实现这一目标,但它给了我非常有限的选项,或者我做错了什么,这是我的尝试:
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"]
结果如下:
["Category #1":"Title1", "Category #2": "Title2"]
这不是我想要的。
我也尝试使用NSExpression
,但我肯定做错了什么。很棒的文章向我介绍了它:http://www.cimgf.com/2015/06/25/core-data-and-aggregate-fetches-in-swift/
我希望有人能帮助我完成这个“看起来微不足道”的任务。谢谢。
最佳答案
看起来您需要按类别字符串包含的某个索引进行排序。您应该将其分离到一个新属性中。然后按照这个索引排序。或者创建新的实体类别,该类别将包含标题和索引并通过关系连接。并再次按此关系排序获取。
关于ios - 核心数据: Grouping Entities by Entitiy Attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36398825/