获取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
}
答
这是如何工作的。当您设置propertiesToFetch
CoreData将返回ManagedObject作为部分故障。这意味着一些属性被填充了一些不是。当您访问未填充的属性时,核心数据将为您完成,但可能会对性能产生影响,因为在大多数情况下,需要往返行缓存。
欲了解更多信息谷歌为CoreData Faulting
请分享您的代码 –
当您设置的属性来获取,但仍取型工业的对象,但会尝试加快只让每个请求的prorties抓取对象...这会导致元组= [行业]不是[(id,Industry_name)] – SeanLintern88
您可以通过将获取请求的'resultType'指定为'.DictionaryResultType'来修改此行为,在这种情况下,获取返回一个数组字典(不是元组),每个字典都有'propertiesToFetch'中指定的键和相应的属性值。 – pbasdf