Я наткнулся на ту же ошибку, когда сделал первые шаги в Core Data (и iOS 11 и Swift 4).Я начал с книги (шестое издание, предназначенное для Swift 4, но предположительно включающее некоторые устаревшие материалы).
Как и предполагалось в книге, мой код был:
let fetchRequest = NSFetchRequest<ReminderData>()
let entity = ReminderData.entity()
fetchRequest.entity = entity
do {
let rows = try managedObjectContext.fetch(fetchRequest)
} catch {
fatalError("Unresolved error")
}
Оказалось, что всеЯ получил от ReminderData.entity()
это nil
.Не уверен, что я сделал что-то не так при настройке модели данных или ... Документы Apple говорят, что NSManagedObject.entity()
не должно быть перезаписано?
Короче говоря, файл Codegen ReminderData+CoreDataProperties.swift
действительно содержит решение:
@nonobjc public class func fetchRequest() -> NSFetchRequest<ReminderData> {
return NSFetchRequest<ReminderData>(entityName: "ReminderDB")
}
, и это было все, что мне нужно было использовать, чтобы в итоге получить правильное NSFetchRequest
, без проблем с NSEntityDescription
, проблема исчезла!
let fetchRequest = NSFetchRequest<ReminderData>(entityName: "ReminderDB")
do {
let rows = try managedObjectContext.fetch(fetchRequest)
} catch {
fatalError("Unresolved error")
}