在CoreData中执行获取请求的最佳方法是什么?

时间:2015-04-13 09:36:53

标签: swift core-data nsfetchrequest

我试图找到对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 个答案:

答案 0 :(得分:3)

首先检查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)")
}