Saya memiliki file AppName.xcdatamodeld
, dengan Category
di Entities
. Di Category
saya berhasil menambahkan catatan dari SwiftUI dan berhasil mengambilnya di View
seperti:
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)])
}
}
Sekarang saya perlu menjalankan kueri yang sama di tempat berbeda dalam suatu program - bukan dalam tampilan SwiftUI, tetapi dalam metode di kelas:
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.
}
}
Saya mencari kode contoh di dokumentasi Data Inti resmi, namun ketika saya mencoba menjalankan ini saya mendapatkan kesalahan:
*** Menghentikan aplikasi karena pengecualian 'NSInvalidArgumentException' yang tidak tertangkap, alasan: '+entityForName: nil bukan NSPersistentStoreCoordinator yang sah untuk mencari nama entitas 'CountdownCategory''
Akan sangat menghargai bantuan apa pun untuk memperbaiki kesalahan itu. Tujuan saya adalah mendapatkan data dari Data Inti dari CountdownCategory
dalam metode ini. (Cepat 5.2)
UPD #1: ketika saya menggunakan let categoriesFetch = CountdownCategory.fetchRequest()
saya mendapatkan kesalahan:
Penggunaan 'fetchRequest()' yang ambigu
UPD #2: ketika saya menggunakan let categoriesFetch: NSFetchRequest<CountdownCategory> = CountdownCategory.fetchRequest()
saya tidak mengalami crash. Tapi bagaimana cara mendapatkan datanya?