swift - Swift 2.0 中的 countForFetchRequest

标签 swift core-data swift2 nsfetchrequest

我正在尝试在 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.

如有任何帮助,我们将不胜感激。

最佳答案

您的代码几乎是正确的,但是error 需要是一个变量,以便作为 带有 & 的 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
}

关于swift - Swift 2.0 中的 countForFetchRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34652618/

相关文章:

iphone - 即使从 CoreData 中删除,仍保存 CoreData 结果数组

ios - 将 swift 2.3 转换为 swift 3 错误

ios - Swift 中图像的一致二进制数据

ios - 我的 NSJSONSerialization 似乎给了我嵌套的 NSDictionaries - 我如何访问外部键中的特定键?

swift - NSFetchedResultsController PerformFetch 崩溃(Swift 3)

ios - 在保存到 coredata -Swift 之前检查数据是否存在

swift - 单击 UITableViewCell 时执行操作

ios - 在 swift 中以编程方式使用 UIButton 切换功能

ios - 按每个对象的 bool 值排序并显示在 Collection View 中

ios - iOS图表更改网格线颜色