我是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!行崩溃,并在控制台中得到以下消息:
致命错误:在展开可选值时意外找到零
然而,在那个时候,error就是nil。我遵循一个例子来编写这段代码,据我所知,只有在有结果时才应该执行if语句块.对吗?那里发生了什么事?
提前感谢
发布于 2015-08-13 14:02:39
我假设你收到的数组是空的。您正在正确地使用可选绑定来确定是否接收到数组,但这并不保证数组中有元素。
在last Array 上的 nil 方法返回一个可选的;当数组为空时,返回nil
/// The last element, or `nil` if the array is empty
var last: T? { get }您正在从myEntities.last中展开返回值,这意味着当myEntities是空数组时,应用程序会崩溃。
为了确保代码的安全性,您还需要检查last方法的返回值。
https://stackoverflow.com/questions/31990062
复制相似问题