Я использую Core Data в приложении для iOS и выполняю следующий код Swift, который приводит к ошибке во второй строке:
let movies = (try? container.newBackgroundContext().fetch(request)) ?? []
return movies.map { $0.name! } // error: unexpectedly found nil while unwrapping...
Обратите внимание, что в приведенном выше примере это на 100% уверено, чтоне является сущностью в movies
с nil
в name
.Соответствующий атрибут в модели базовых данных установлен на не обязательно .
Когда я изменяю код, как показано ниже (то есть не вставляя newBackgroundContext()
), ошибки нет:
let context = container.newBackgroundContext()
let movies = (try? context.fetch(request)) ?? []
return movies.map { $0.name! } // no error this time
Я довольно новичок в Swift и предполагаю, что он как-то связан с управлением памятью (например, context
определен преждевременно), но я был бы признателен за фактическое объяснение того, почему ошибка возникает в первом листинге кода.