Sko*_*ota 9 core-data nsfetchrequest swift swift2
我试图countForFetchRequest在Swift 2.0中的托管对象上下文中使用该方法.
我注意到错误处理executeFetchRequest已更改为新do-try-catch语法:
func executeFetchRequest(_ request: NSFetchRequest) throws -> [AnyObject]
Run Code Online (Sandbox Code Playgroud)
但该countForFetchRequest方法仍然使用遗留错误指针:
func countForFetchRequest(_ request: NSFetchRequest,
error error: NSErrorPointer) -> Int
Run Code Online (Sandbox Code Playgroud)
...我在使用Swift 2.0时如何使用它时遇到了一些麻烦.
如果我做与Swift 2.0之前相同的事情:
let error: NSError? = nil
let count = managedObjectContext.countForFetchRequest(fetchRequest, error: &error)
Run Code Online (Sandbox Code Playgroud)
我收到错误说删除&,但如果我删除,我得到另一个错误,说NSError不能转换为NSErrorPointer.
任何帮助将不胜感激如何使这项工作.
Mar*_*n R 28
你的代码几乎是正确的,但error需要是一个变量,以便作为inout-argument传递&:
var error: NSError? = nil
let count = managedObjectContext.countForFetchRequest(fetchRequest, error: &error)
Run Code Online (Sandbox Code Playgroud)
更新:从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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5687 次 |
| 最近记录: |