在 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 的最佳方法是啥?

在批处理文件中执行子字符串的最佳方法是啥?

编写 Maven2 站点插件时获取站点资源列表的最佳方法是啥?

核心数据请求和保存的最佳实践

CoreData 跨模型访问对象

通过 OleDbConnection 获取单个记录的最佳方法是啥?