ios - 是否可以创建 NSFetchedResultsController 来获取特定属性具有不同值的所有实体?

标签 ios swift nsfetchedresultscontroller

假设我有 Person 实体,其属性:id、name、age:

我有以下记录:

101, Katherine, 23
102, Madelaine, 23
103, Katherine, 27
104, Vicky, 18
105, Kirsten, 45
106, Vicky, 12

And I need all records sorted by age, without duplicating name.

The output should be:

105, Kirsten, 45
103, Katherine, 27
102, Madelaine, 23
104, Vicky, 18

This is how I create NSFRC:

    let context = NSManagedObjectContext.mr_default()
    let fetchRequest = NSFetchRequest<Person>(entityName: "Person")
    let ageDescriptor = NSSortDescriptor(key: "age", ascending: false)

    fetchRequest.sortDescriptors = [ageDescriptor]

    fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
    fetchedResultsController.delegate = self

如何应用规则来获取所有人员和仅一个(最年长的)同名人员?

最佳答案

您可以使用 NSFetchrequest 中的属性 returnsDistinctResultspropertiesToFetch 仅返回提取请求的不同结果。在您的情况下,propertiesToFetch 将是实体的名称。

您可以在此处找到更多信息: https://developer.apple.com/documentation/coredata/nsfetchrequest

就像示例代码一样。 (我是凭自己的想法做的,所以准确的语法可能不是 100% 准确):

let entity = NSEntityDescription.entity(forEntityName: "Person", in: context)

let entityProperties = entity.propertiesByName
let namePropertyDescription = entityProperties["name"]

fetchrequest.propertiesToFetch = [namePropertyDescription]
fetchrequest.returnsDistinctResults = true

关于ios - 是否可以创建 NSFetchedResultsController 来获取特定属性具有不同值的所有实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44971275/

相关文章:

ios - 你如何重新描边到另一种颜色的路径并得到完全相同的结果?

ios - Xcode - presentViewController NSInvalidArgumentException : unrecognized selector sent to instance

ios - 由于图像方向而无法检测图像中的面部

ios - 使用 Alamofire 拦截每一个响应

ios - Objective-c 元数据OutputRectOfInterestForRect 返回 {{0, 0}, {0, 0}}

ios - CV日历: How to override CVCalendar properties that do not have explicit function API?

ios - 获取任何包含 ID 核心数据的数据

swift - 自引用实体,为了与 NSFetchedResultsController 建立父子关系

ios - 带有 iCloud 的 CoreData 驱动应用程序中带有 NSSortDescriptor 和 NSFetchedResultsController 的自定义部分

ios - 如何在删除多行时实现 NSFetchedResultsController 委托(delegate)?