Swift: rilevamento di un valore nullo inatteso in un runtime non opzionale: il casting come opzionale fallisce



core-data optional (1)

Penso che dovresti rendere il tuo titolo un optional se i dati di base possono restituire un valore nullo per il titolo

@NSManaged var title: String?

E provalo senza il cast

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

Ho un UITableViewController carica le sue voci da Core Data tramite un NSFetchedResultsController . Come questo:

let historyItem = fetchedResults.objectAtIndexPath(indexPath) as HistoryItem

historyItem ha una proprietà title definita in questo modo:

@NSManaged var title: String

ma in qualche modo i dati di base hanno un valore nullo per il title in alcune voci che causa EXC_BAD_ACCESS perché title non è String? . Questo problema è stato risolto in Verifica se la proprietà è impostata in Dati principali? e la risposta altamente votata suggerisce qualcosa del genere:

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

ma l'ho appena provato e mi ha comunque dato EXC_BAD_ACCESS:

Lo stesso problema e soluzione è menzionata anche in Swift: il casting di una stringa di dati nil core come valore opzionale e la mia precedente domanda duplicata Swift: gestisce un valore nullo inaspettato, quando la variabile non è opzionale ma non funziona per me. Sto usando Xcode 6.2 e iOS8.

Sto fraintendendo qualcosa, per favore? Questo approccio dovrebbe funzionare?





optional