swift中的executeFetchRequest致命错误

时间:2015-08-13 13:46:47

标签: ios swift core-data nsfetchrequest

我是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!行崩溃,我在控制台中收到此消息:

  

致命错误:在解包可选值时意外发现nil

但是,此时errornil。我按照一个例子来编写代码,据我所知,if语句块只应在有结果的情况下执行......对吗?那是怎么回事?

提前致谢

1 个答案:

答案 0 :(得分:0)

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

last上的Array方法返回一个Optional;当数组为空时,它返回nil

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

您正在从myEntities.last解包返回值,这意味着当myEntities为空数组时,您的应用会崩溃。

为了使此代码安全,您还需要检查last方法的返回值。