核心数据的独特价值 swift

Posted

技术标签:

【中文标题】核心数据的独特价值 swift【英文标题】:Distinct value from core data 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)")
    

【问题讨论】:

看看这个答案:***.com/a/60101960/9732124 来自 Johannes Fahrenkrug 这能回答你的问题吗? CoreData get distinct values of Attribute 【参考方案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的影响。

【讨论】:

以上是关于核心数据的独特价值 swift的主要内容,如果未能解决你的问题,请参考以下文章

Core Data 的独特价值

核心数据 NSPersistentStoreCoordinator 中止来电,SWIFT

什么是数据中台?数据中台带来了哪些价值?_光点科技

使用 Swift 为核心图像过滤器添加价值

核心数据独特属性

周鸿袆:360回归是出于国家安全考虑(硬件有硬件独特的规律,硬件不可能有很高的利润,核心的价值还是硬件背后承载的软件和云端的服务)