首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift中的executeFetchRequest致命错误

Swift中的executeFetchRequest致命错误
EN

Stack Overflow用户
提问于 2015-08-13 13:46:46
回答 1查看 154关注 0票数 0

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

代码语言:javascript
复制
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语句块.对吗?那里发生了什么事?

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-13 14:02:39

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

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

代码语言:javascript
复制
/// The last element, or `nil` if the array is empty
var last: T? { get }

您正在从myEntities.last中展开返回值,这意味着当myEntities是空数组时,应用程序会崩溃。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31990062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档