[英]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:
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.