【发布时间】:2015-09-24 16:15:28
【问题描述】:
我有一个如下所示的核心数据实体:
name: String
creationDate: Date
我想检索按创建日期降序排列的最后 5 个唯一名称。从 CoreData 查询这些数据的最有效方法是什么?
【问题讨论】:
我有一个如下所示的核心数据实体:
name: String
creationDate: Date
我想检索按创建日期降序排列的最后 5 个唯一名称。从 CoreData 查询这些数据的最有效方法是什么?
【问题讨论】:
根据具体情况,这两种解决方案都很有效。
如果您没有内存限制(即没有太多记录),您可以获取所有按日期排序的,使用 KVC 过滤并获取前 n 条记录。
(allItems as NSArray).valueForKeyPath("@distinctUnionOfSets.name")
如果您想直接从商店获取此信息,您必须返回到NSDictionaryResultType 获取获取请求。类似的东西
let request = NSFetchRequest(entityName:"Item")
request.resultType = NSDictionaryResultType
request.returnsDistinctResults = true
let entity = NSEntityDescription(name: "Item", inManagedObjectContext: context)
let description = entity.propertiesByName["name"]
request.propertiesToFetch = [description!]
request.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
request.fetchLimit = 5
【讨论】:
names。它只选择唯一的Items。有没有办法解决这个问题?