swift2 Swift 2.0中的取数请求计数

5f0d552i  于 2022-11-06  发布在  Swift
关注(0)|答案(2)|浏览(244)

我尝试在Swift 2.0中的托管对象上下文中使用countForFetchRequest方法。
我注意到,executeFetchRequest的错误处理已更改为新的do-try-catch语法:

func executeFetchRequest(_ request: NSFetchRequest) throws -> [AnyObject]

但是countForFetchRequest方法仍然使用传统的错误指针:

func countForFetchRequest(_ request: NSFetchRequest,
                    error error: NSErrorPointer) -> Int

......我在弄清楚如何在Swift 2.0中使用它时遇到了一点麻烦。
如果我像Swift 2.0之前的版本那样做:

let error: NSError? = nil
let count = managedObjectContext.countForFetchRequest(fetchRequest, error: &error)

我得到错误消息,说要删除&,但如果我删除它,我得到另一个错误消息,说NSError不能转换为NSErrorPointer
任何帮助将不胜感激关于如何让这个工作。

7cwmlq89

7cwmlq891#

您的代码几乎是正确的,但是error需要是一个 variable,以便作为&的inout参数传递:

var error: NSError? = nil
let count = managedObjectContext.countForFetchRequest(fetchRequest, error: &error)

更新:Swift 3起,countForFetchRequest抛出错误:

do {
    let count = try managedObjectContext.context.count(for:fetchRequest)
    return count
} catch let error as NSError {
    print("Error: \(error.localizedDescription)")
    return 0
}
cdmah0mi

cdmah0mi2#

你需要这样做:

let error = NSErrorPointer()
let fetchResults = coreDataStack.context.countForFetchRequest(fetchRequest, error: error)
print("Count \(fetchResults)")

这是Swift 2.0的代码

相关问题