У меня есть файл AppName.xcdatamodeld
с Category
в Entities
. В Category
я успешно добавляю записи из SwiftUI и успешно извлекаю их в View
вот так:
import SwiftUI
import CoreData
struct CategoriesList: View {
@Environment(\.managedObjectContext) var moc
var fetchRequest: FetchRequest<CountdownCategory>
var countdownCategories: FetchedResults<CountdownCategory> {
fetchRequest.wrappedValue
}
var body: some View {
ForEach(countdownCategories, id: \.self) { countdownCategory in
Text(countdownCategory.title ?? "Category")
}
}
init() {
fetchRequest = FetchRequest<CountdownCategory>(entity: CountdownCategory.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \CountdownCategory.dateAdded, ascending: false)])
}
}
Теперь мне нужно выполнить тот же запрос в другом месте программы - не в представлении SwiftUI, а в методе класса:
import Foundation
import CoreData
class Categories {
func getCategories() {
let moc = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
let categoriesFetch = NSFetchRequest<NSFetchRequestResult>(entityName: "CountdownCategory")
do {
let categoriesFetch = try moc.fetch(categoriesFetch) as! [CountdownCategory]
} catch {
fatalError("Failed to fetch categories: \(error)")
}
// etc.
}
}
Я нашел пример кода в официальной документации Core Data, однако, когда я пытаюсь выполнить это, я получаю сообщение об ошибке:
*** Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «+entityForName: nil не является допустимым NSPersistentStoreCoordinator для поиска имени объекта «CountdownCategory»
Буду признателен за любую помощь в исправлении этой ошибки. Моя цель — получить данные из Core Data от CountdownCategory
этим методом. (Свифт 5.2)
UPD №1: при использовании let categoriesFetch = CountdownCategory.fetchRequest()
получаю ошибку:
Неоднозначное использование 'fetchRequest()'
UPD №2: при использовании let categoriesFetch: NSFetchRequest<CountdownCategory> = CountdownCategory.fetchRequest()
у меня не вылетает. Но как мне получить данные?