<分区>
我有一个 UITableViewController
通过 NSFetchedResultsController
从 Core Data 加载它的条目。像这样:
let historyItem = fetchedResults.objectAtIndexPath(indexPath) as HistoryItem
historyItem
有一个 title
属性定义如下:
@NSManaged var title: String
所以在 cellForRowAtIndexPath
中,代码说
cell?.textLabel?.text = historyItem.title
那应该没问题。 title
不是可选的,不需要解包。
但是,在过去,存储的 Core Data 获取了一些 title
属性值为 nil
的对象。它们存储在那里,等待导致错误。如果这些对象之一显示在单元格中,我将在上面的 Swift 代码行中看到运行时地址异常,其中地址为 0。
为了稳健性,我需要编写代码来确保传送到我的程序的存储数据不会导致崩溃。但是,我不能写
if historyItem.title == nil { } // gives compiler error
因为 title
不是可选的,编译器不允许。如果我写
let optionalTitle:String? = historyItem.title
我仍然在该行上得到运行时 EXC_BAD_ACCESS
。
我如何检查 title
不是错误的 nil?
谢谢!