Swift 2.0 中的 countForFetchRequest
countForFetchRequest in Swift 2.0
我正在尝试在 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 中使用它时遇到了一些麻烦。
如果我做与 pre-Swift 2.0 相同的事情:
let error: NSError? = nil
let count = managedObjectContext.countForFetchRequest(fetchRequest, error: &error)
我收到错误说要删除 &
,但是如果我删除它,我会收到另一个错误说 NSError
无法转换为 NSErrorPointer
。
如能提供有关如何使其正常工作的任何帮助,我们将不胜感激。
你需要这样做:
let error = NSErrorPointer()
let fetchResults = coreDataStack.context.countForFetchRequest(fetchRequest, error: error)
print("Count \(fetchResults)")
这是 Swift 2.0
的代码
您的代码几乎是正确的,但是 error
需要是一个 变量 ,才能作为
inout-argument 与 &
:
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
}
我正在尝试在 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 中使用它时遇到了一些麻烦。
如果我做与 pre-Swift 2.0 相同的事情:
let error: NSError? = nil
let count = managedObjectContext.countForFetchRequest(fetchRequest, error: &error)
我收到错误说要删除 &
,但是如果我删除它,我会收到另一个错误说 NSError
无法转换为 NSErrorPointer
。
如能提供有关如何使其正常工作的任何帮助,我们将不胜感激。
你需要这样做:
let error = NSErrorPointer()
let fetchResults = coreDataStack.context.countForFetchRequest(fetchRequest, error: error)
print("Count \(fetchResults)")
这是 Swift 2.0
的代码您的代码几乎是正确的,但是 error
需要是一个 变量 ,才能作为
inout-argument 与 &
:
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
}