【问题标题】:Distinct value from core data swift核心数据的独特价值 swift
【发布时间】:2020-10-07 07:15:46
【问题描述】:

我想从核心数据中获取不同的日期。 使用此代码 fetchRequest.returnsDistinctResults = true 不起作用。 它仍然显示所有值。

guard let appDelegate =
          UIApplication.shared.delegate as? AppDelegate else {
            return
        }
    
    let managedContext = appDelegate.persistentContainer.viewContext
    let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Journal")
    
    
    fetchRequest.propertiesToFetch = ["dateAsNumber"]
    fetchRequest.returnsDistinctResults = true

    do {
    
        dateListSquare = try managedContext.fetch(fetchRequest)
        
    } catch let error as NSError {
      
        print("Could not fetch. \(error), \(error.userInfo)")
    }

【问题讨论】:

标签: swift database xcode core-data


【解决方案1】:

如果您想要不同的结果,您需要将获取请求的结果类型设置为NSFetchRequestResultType.dictionaryResultType。您无法获取托管对象并获得不同的结果,因为可能存在多个具有相同值的托管对象。

看起来像

let fetchRequest: NSFetchRequest<NSDictionary> = NSFetchRequest(entityName: "Journal")
fetchRequest.propertiesToFetch = ["dateAsNumber"]
fetchRequest.returnsDistinctResults = true
fetchRequest.resultType = .dictionaryResultType

结果将是一个字典数组。每个propertiesToFetch 中的每个条目都有一个密钥(在这种情况下只有一个)。

如果您使用propertiesToFetch 而不使用dictionaryResultType,您会影响故障的工作方式,但不会影响结果的内容。使用returnsDistinctResults只有在你也使用propertiesToFetch的情况下才有效,所以它也受你是否使用dictionaryResultType的影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    相关资源
    最近更新 更多