获取CoreData中的特定属性或属性

问题描述:

我使用以下代码从我的称为行业的CoreDataModel中取消属性。不过我能够使用fetchRequest.propertiesToFetch访问还没有要求这些属性 让fetchRequest = NSFetchRequest(的entityName: “工业”) fetchRequest.propertiesToFetch = “ID”, “industry_name”]获取CoreData中的特定属性或属性

After this i am using following code: 
    industryObject.industry_name=tuple.value(forKey: ""ind_subtype"") as? String 

    "ind_subtype" i have not specified in *.propertiesToFetch* and i am still able to access it 


func fetchIndustryNamesWithId()->[IndustryData]{ 

     var industryData=[IndustryData]() 
     //fetchRequest.predicate = NSPredicate(format: "firstName == %@", firstName) 
     let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Industry") 
     fetchRequest.propertiesToFetch = ["id","industry_name"] 
     do { 
      let tuples = try managedObjectContext.fetch(fetchRequest) 
      for tuple in tuples{ 
       let industryObject=IndustryData() 
       industryObject.id=tuple.value(forKey: "id") as? Int 
       industryObject.industry_name=tuple.value(forKey: "industry_name") as? String 
       industryObject.ind_subtype=tuple.value(forKey: "ind_subtype") as? String 
       industryData.append(industryObject) 
      } 
      return industryData 
     } catch { 
      let fetchError = error as NSError 
      print(fetchError) 
     } 
     return industryData 
    } 
+0

请分享您的代码 –

+0

当您设置的属性来获取,但仍取型工业的对象,但会尝试加快只让每个请求的prorties抓取对象...这会导致元组= [行业]不是[(id,Industry_name)] – SeanLintern88

+0

您可以通过将获取请求的'resultType'指定为'.DictionaryResultType'来修改此行为,在这种情况下,获取返回一个数组字典(不是元组),每个字典都有'propertiesToFetch'中指定的键和相应的属性值。 – pbasdf

这是如何工作的。当您设置propertiesToFetch CoreData将返回ManagedObject作为部分故障。这意味着一些属性被填充了一些不是。当您访问未填充的属性时,核心数据将为您完成,但可能会对性能产生影响,因为在大多数情况下,需要往返行缓存。

欲了解更多信息谷歌为CoreData Faulting