【问题标题】:Predicate to retrieve the last N unique names from CoreData.从 CoreData 检索最后 N 个唯一名称的谓词。
【发布时间】:2015-09-24 16:15:28
【问题描述】:

我有一个如下所示的核心数据实体:

name: String
creationDate: Date

我想检索按创建日期降序排列的最后 5 个唯一名称。从 CoreData 查询这些数据的最有效方法是什么?

【问题讨论】:

    标签: ios swift core-data


    【解决方案1】:

    根据具体情况,这两种解决方案都很有效。

    如果您没有内存限制(即没有太多记录),您可以获取所有按日期排序的,使用 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。有没有办法解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    相关资源
    最近更新 更多