ios - 核心数据: Grouping Entities by Entitiy Attribute

标签 ios swift core-data aggregate fetch

我有一个具有如下属性的简单实体:

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/

相关文章:

ios - 使用 Alamofire 的 cURL 请求

ios - 在 iOS 中删除观察者

ios - 在 AppDelegate 中使用 RGB 但颜色不完全匹配(十六进制)

ios - 如何将自定义数据添加到标记(Google Maps API SWIFT)

ios - SwiftUI 中的自定义模式转换

ios - 如何将旧项目移动到PersistentContainer

ios - 使用核心数据将联系人保存到 TableView 中

ios - SVG 背景图像未出现在 iPad 上

swift - 在 Swift 扩展中,获取实际的调用对象?

从选择 TableView 单元格加载的 ios Swift ViewController 丢失引用