在 CoreData 中执行获取请求的最佳方法是啥?
Posted
技术标签:
【中文标题】在 CoreData 中执行获取请求的最佳方法是啥?【英文标题】:What is the best way to do a fetch request in CoreData?在 CoreData 中执行获取请求的最佳方法是什么? 【发布时间】:2015-04-13 09:36:52 【问题描述】:我正在尝试寻找最有效的方式来针对 CoreData 执行获取请求。以前我首先检查是否存在错误,如果不存在,我检查了返回实体的数组。有没有更快的方法来做到这一点。这样的方式是否可以接受?
let personsRequest = NSFetchRequest(entityName: "Person")
var fetchError : NSError?
//Is it okay to do the fetch request like this? What is more efficient?
if let personResult = managedObjectContext.executeFetchRequest(personRequest, error: &fetchError) as? [Person]
println("Persons found: \(personResult.count)")
else
println("Request returned no persons.")
if let error = fetchError
println("Reason: \(error.localizedDescription)")
亲切的问候, 费舍尔
【问题讨论】:
【参考方案1】:先检查executeFetchRequest()
的返回值是正确的。
如果获取失败,则返回值为nil
,在这种情况下错误
变量会被设置,所以不需要检查if let error = fetchError
。
请注意,如果不存在(匹配的)对象,则请求不会失败。 在这种情况下,会返回一个空数组。
let personRequest = NSFetchRequest(entityName: "Person")
var fetchError : NSError?
if let personResult = managedObjectContext.executeFetchRequest(personRequest, error: &fetchError) as? [Person]
if personResult.count == 0
println("No person found")
else
println("Persons found: \(personResult.count)")
else
println("fetch failed: \(fetchError!.localizedDescription)")
【讨论】:
优秀的回复。正是我想要的。谢谢。以上是关于在 CoreData 中执行获取请求的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
在 Spring MVC 中获取当前 URL 的最佳方法是啥?