【问题标题】:To fetch unique Attribute/Column values in Core Data在核心数据中获取唯一的属性/列值
【发布时间】:2018-01-27 04:07:42
【问题描述】:

我有一个实体计算器产品 属性为“id”、“brand”、“category”、“mrp” 我只想获取“类别”列/属性的值

  let context = DataBaseController.getContext()
    let fetchRequest:NSFetchRequest<CalculatorProduct> = CalculatorProduct.fetchRequest()

    fetchRequest.propertiesToFetch = ["category"]

    fetchRequest.returnsDistinctResults = true
    do{

        let result = try context.fetch(fetchRequest)


        print("array from db \(String(describing: result.count))")
        print("array from db \(String(describing: result))")

        for val in result{

            print("\(String(describing: val.category))")
        }

    }
    catch{

        print("error in fetching is\(error)")
    }

【问题讨论】:

  • 什么不起作用?
  • 它正在获取整个对象
  • 我想要列的值
  • 试试fetchRequest.resultType = .dictionaryResultType

标签: ios swift xcode core-data swift3


【解决方案1】:

尝试以下方法:

let context = DataBaseController.getContext()
let fetchRequest:NSFetchRequest<CalculatorProduct> = CalculatorProduct.fetchRequest()
fetchRequest.propertiesToFetch = ["category"]
fetchRequest.returnsDistinctResults = true
fetchRequest.resultType = .dictionaryResultType
do {
    let result = try context.fetch(fetchRequest) as! [[String:Any]]

    print("array from db \(String(describing: result.count))")
    print("array from db \(String(describing: result))")

    for val in result{
        print("\(String(describing: val["category"]))")
    }
}
catch{
    print("error in fetching is\(error)")
}

【讨论】:

  • 这行不通,因为您要排除的结果是 CalculatorProduct,因此它将返回整个对象,但实际上,您的代码会在“fetchRequest.resultType = .dictionaryResultType”上出现错误,因为您是试图将 CalculatorProduct 对象转换为字典。所以我只是将 "NSFetchRequest" 更改为 NSFetchRequest ,它对我有用。
猜你喜欢
  • 1970-01-01
  • 2012-10-12
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多