Swift 中的 executeFetchRequest 致命错误
Posted
技术标签:
【中文标题】Swift 中的 executeFetchRequest 致命错误【英文标题】:executeFetchRequest fatal error in Swift 【发布时间】:2015-08-13 13:46:46 【问题描述】:我是Swift
的新手,我在写一些Core Data
相关的方法时正在努力学习。我需要获取一些实体,这是我调用的方法的代码 sn-p:
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
但是,此时error
是nil
。我按照示例编写了该代码,据我了解,if
语句块只有在有结果时才应执行......对吗?那里发生了什么?
提前致谢
【问题讨论】:
【参考方案1】:我假设您收到的数组是空的。您正确地使用了可选绑定来确定您是否接收到一个数组,但这并不能保证您在数组中有元素。
Array
上的 last
方法返回一个 Optional;当数组为空时返回nil
:
/// The last element, or `nil` if the array is empty
var last: T? get
您正在解开来自myEntities.last
的返回值,这意味着当myEntities
为空数组时,您的应用会崩溃。
为了使这段代码安全,您还需要检查last
方法的返回值。
【讨论】:
以上是关于Swift 中的 executeFetchRequest 致命错误的主要内容,如果未能解决你的问题,请参考以下文章