Saya selalu mendapatkan kesalahan runtime ini ketika saya memulai aplikasi saya menggunakan kerangka kerja CoreData. Saya mengikuti instruksi dengan tepat untuk menyiapkan FetchRequest tetapi saya terus mendapatkan kesalahan ini.

Could not cast value of type 'Swift.Optional<Swift.AnyObject>' (0x7feb68884da0) 
to 'NSFetchRequest' (0x7feb68884e40).

Di sini saya mengatur FetchRequest di Tampilan yang ingin saya gunakan.

@Environment(\.managedObjectContext) var managedObjectContext
@FetchRequest(fetchRequest: NotificationsItem.getAllNotificationsItems()) var notificationsItems:FetchedResults<NotificationsItem>

Dan inilah cara saya mengaturnya di kelas NotificationsItem saya

import CoreData
import Foundation

public class NotificationsItem: NSManagedObject, Identifiable {
    @NSManaged public var createdAt: Date?
    @NSManaged public var type: String?
}

extension NotificationsItem {
    static func getAllNotificationsItems() -> NSFetchRequest<NotificationsItem> {
        let request:NSFetchRequest<NotificationsItem> = NotificationsItem.fetchRequest() as! NSFetchRequest<NotificationsItem>

        let sortDescriptor = NSSortDescriptor(key: "createdAt", ascending: true)

        request.sortDescriptors = [sortDescriptor]

        return request
    }
}

Mengapa kode ini terus mendapatkan kesalahan ini meskipun berfungsi dengan baik di salinan instruktur?

1
Florian Pürschel 1 Juli 2020, 15:34

1 menjawab

Jawaban Terbaik

Tambahkan ini di bagian atas definisi kelas NSManagedObject Anda

//This need to be declared here
@objc(NotificationsItem)

public class NotificationsItem: NSManagedObject, Identifiable {
...

Dan pastikan untuk mengatur Codegen kelas ke Manual/None

1
davidev 1 Juli 2020, 13:14