【问题标题】:Find objects with unique parent relation object in CoreData Swift在 CoreData Swift 中查找具有唯一父关系对象的对象
【发布时间】:2021-04-14 03:22:54
【问题描述】:

我需要 1 个核心数据获取请求的帮助。我有 2 个实体

  1. 部门
  2. 学生(具有分数属性) 所以该系可以有多个学生。 现在我想从不同部门获取得分最高的每个学生。 我已经查询了分数排序。但希望每个(独特的)部门的唯一学生
let fetchRequest:NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName: "Students")
let sortDescriptor = NSSortDescriptor(key: "scores", ascending: false)
fetchRequest.fetchBatchSize = 50
fetchRequest.includesSubentities = true

请提出建议,我们如何找到每个部门中得分最高的学生。

现在很遗憾,我无法将结果类型用作NSDictionaryResultType,因为我正在 NSFetchedResultsController 中获取数据。但是想要像@distinctUnionOfObjects 这样的东西。 [students valueForKeyPath:@"@distinctUnionOfObjects.department"]

预期输出

  1. 罗宾(法律)74
  2. 斯蒂芬(数学)98
  3. 约翰(计算机科学)95
  4. 蒂姆(电子)90
  5. 约翰逊(经济学)80

【问题讨论】:

  • 问题是什么?
  • @zeytin 问题已更新
  • @JoakimDanielson 这个有性能问题

标签: ios swift core-data nsfetchedresultscontroller


【解决方案1】:

伙计们,我遵循了@JoakimDanielson 分享的方法,但遇到了性能问题。因此,为了提高性能,我还将 topStudent 的分数存储在部门表中。现在在插入时性能受到影响,而在 UI 线程上进行渲染时,性能从1.09 ms 大幅提高到450 usecs。请注意,我还在获取期间在部门中添加了索引。

【讨论】:

    猜你喜欢
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多