ฉันมีไฟล์ 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()
ฉันไม่ประสบปัญหาขัดข้อง แต่ฉันจะได้รับข้อมูลได้อย่างไร