核心数据:按实体属性对实体进行分组
Posted
技术标签:
【中文标题】核心数据:按实体属性对实体进行分组【英文标题】:Core Data: Grouping Entities by Entitiy Attribute 【发布时间】:2016-04-04 09:23:56 【问题描述】:我有一个简单的实体,其属性如下:
x : String
y : String
category: String
z : Int
没有多余的。 我想获取我的数据并按类别分组。例如:
我想收到一本字典,它看起来像这样:
["Category #1": [Entity], "Category #2": [Entity], etc.]
所以,基本上我想按类别对我的实体进行分组并将其提供给我。 NSFetchedResultsController
可以为我做这件事,但在这种情况下我不想让我们这样做。它是init方法:
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/
我希望有人可以帮助我完成这个“看起来微不足道”的任务。谢谢。
【问题讨论】:
【参考方案1】:看起来您需要按类别字符串包含的某个索引进行排序。您应该将其分隔在一个新属性中。然后按这个索引排序。或者创建新的实体类别,它将包含标题和索引并与关系连接。并再次按此关系排序。
【讨论】:
感谢您的回答,我自己已经考虑过了,但是NSFetchedResultsController
可以做我需要的事情,您认为没有它我们不能做同样的事情吗?
是的,我这样做了,但我不会在这种情况下不使用它。
尝试仅对类别进行排序并获得排序后的实体数组。
在这种情况下,for in 循环,您如何看待将数组拆分为多个部分?以上是关于核心数据:按实体属性对实体进行分组的主要内容,如果未能解决你的问题,请参考以下文章