2015-08-13 3 views
0

Я новичок в Swift, и я пытаюсь узнать, когда я пишу Core Data связанные методы. Мне нужно извлечь некоторые объекты, это фрагмент кода метода я призываю, что:executeFetchRequest фатальная ошибка в Swift

let results = context.executeFetchRequest(fetchRequest, error: &error) as! [MyCustomEntity]? 
    if let myEntities = results { 
     let lastEntity = myEntities.last! 
     return lastEntity.entityNum.integerValue 
    } 

Когда я запустить приложение, он выходит из строя на линии let lastEntity = myEntities.last! и я получаю это сообщение в консоли:

fatal error: unexpectedly found nil while unwrapping an Optional value

Однако error является nil в этой точке. Я последовал примеру, чтобы написать этот код, и насколько я понял, блок оператора if должен выполняться только в том случае, если есть результаты ... правильно? Что там происходит?

Заранее спасибо

ответ

0

Я предполагаю, что массив, который вы получаете пустой. Вы правильно используете необязательное связывание, чтобы определить, получаете ли вы массив или нет, но это не гарантирует, что у вас есть элементы в массиве.

Метод last на Array возвращает a Необязательно; она возвращает nil, когда массив пуст:

/// The last element, or `nil` if the array is empty 
var last: T? { get } 

Вы разворачивание возвращаемого значения из myEntities.last, что означает ваши сбои приложения, когда myEntities является пустым массивом.

Чтобы этот код был безопасным, вам также необходимо проверить возвращаемое значение из метода last.

Смежные вопросы