微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 CoreData Swift

如何解决在 CoreData Swift

我需要关于 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

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。