我试图countForFetchRequest
在Swift 2.0中的托管对象上下文中使用该方法.
我注意到错误处理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
.
任何帮助将不胜感激如何使这项工作.
你的代码几乎是正确的,但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 }