繁体   English   中英

Swift:在运行时以非可选的方式检测到意外的nil值:强制转换为可选失败

[英]Swift: detecting an unexpected nil value in a non-optional at runtime: casting as optional fails

我有一个UITableViewController通过NSFetchedResultsController从Core Data加载其条目。 像这样:

let historyItem = fetchedResults.objectAtIndexPath(indexPath) as HistoryItem

historyItem具有如下定义的title属性:

@NSManaged var title: String

但是以某种方式核心数据在某些条目中title值为零,这会导致EXC_BAD_ACCESS,因为title不是String? 在“ 检查核心数据中是否设置了属性?”中已解决此问题 投票率很高的答案建议如下:

    if let possibleTitle = historyItem.title as String? {
        NSLog("possibleTitle was set OK")
    } else {
        NSLog("possibleTitle was nil")
    }

但是我只是尝试了一下,仍然给了我EXC_BAD_ACCESS: Xcode屏幕抓取

Swift也提到了相同的问题和解决方案-将nil核心数据字符串强制转换为可选值,而我先前的重复问题Swift:当变量不是可选的但对我不起作用时,处理意外的nil值 我正在使用Xcode 6.2和iOS8。

请问我误会了吗? 这种方法行得通吗?

我认为如果核心数据可以为标题返回nil值,则应该将标题设为可选

@NSManaged var title: String?

并在没有演员表的情况下对其进行测试

if let possibleTitle = historyItem.title{
    NSLog("possibleTitle was set OK")
} else {
    NSLog("possibleTitle was nil")
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM