假设我的Person
实体具有属性:id, name, age
:
我有以下记录:
101, Katherine, 23 102, Madelaine, 23 103, Katherine, 27 104, Vicky, 18 105, Kirsten, 45 106, Vicky, 12
我需要按年龄排序的所有记录,不需要重复名称。
输出应为:
105, Kirsten, 45 103, Katherine, 27 102, Madelaine, 23 104, Vicky, 18
这是我创建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
如何应用规则来获取所有人和只有一个(最老的)具有相同名称的人?
答案 0 :(得分:0)
您可以使用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