簡體   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