Swift 中的 executeFetchRequest 致命错误

executeFetchRequest fatal error in Swift

我是 Swift 的新手,在编写一些 Core Data 相关方法的同时我正在努力学习。我需要获取一些实体,这是我为此调用的方法的代码片段:

let results = context.executeFetchRequest(fetchRequest, error: &error) as! [MyCustomEntity]?
    if let myEntities = results {
        let lastEntity = myEntities.last!
        return lastEntity.entityNum.integerValue
    }

当我 运行 应用程序时,它在 let lastEntity = myEntities.last! 行崩溃,我在控制台中收到此消息:

fatal error: unexpectedly found nil while unwrapping an Optional value

然而,error 在那个时候是 nil。我按照一个例子来编写该代码,据我所知, if 语句块只有在有结果时才应该执行……对吗?那里发生了什么?

提前致谢

我假设您收到的数组是空的。您正在正确使用可选绑定来确定您是否收到数组,但这并不能保证您在数组中有元素。

Array return 上的 last 方法是可选的;它 returns nil 当数组为空时:

/// The last element, or `nil` if the array is empty
var last: T? { get }

您正在解包 myEntities.last 中的 return 值,这意味着当 myEntities 为空数组时您的应用程序崩溃。

为了确保此代码安全,您还需要检查 last 方法中的 return 值。