假设我有 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 中的属性 returnsDistinctResults
和 propertiesToFetch
仅返回提取请求的不同结果。在您的情况下,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/