无法将 ForEach 循环中的元素转换为 NSManagedObject 子类 SwiftUI

Unable to cast element in ForEach Loop to NSManagedObject Subclass SwiftUI

我在 SwiftUI 中获得了一个 ListView,并希望根据给定的 属性 生成 RowView。 因此,我想检查 ForEach 循环中元素的 属性。

Xcode 无法识别元素的类型,这就是为什么我想将元素转换为正确的 Class,这是一个 NSManagedObject 子类 .

我从 xcdatamodeld 创建了 NSManagedObject 子类(编辑器 -> 创建 NSManagedObject 子类...)。

NSManagedObject 子类在 objective-c 中创建,我将 .h 文件添加到桥接头文件。

我在项目的其余部分使用 NSManagedObject 子类没有问题。 我什至可以在同一个结构中创建该类型的 属性,如下所示:

struct MyListView: View {

    var test : MyNSManagedObjectSubclass //Xcode does recognize it here

出于某种原因 Xcode 无法识别 ForEach 循环内的 NSManagedObject 子类。

代码如下:

struct MyListView: View {

    var test : MyNSManagedObjectSubclass //Xcode does recognize it here
    @EnvironmentObject private var fetchResultsContainer : FetchedResultsContainer

    var body: some View {
        NavigationView{
            VStack{
                ForEach(fetchResultsContainer.results , id: \.identifier) { result in
                    if let castedResult = result as! MyNSManagedObjectSubclass { //Xcode does not recognize it here
                        if castedResult.property{
                            ResultRowView(input: result)
                        }
                    }
                }
            }
        }
    }
}

FetchedResultsContainer:

@objc class FetchedResultsContainer : NSObject, ObservableObject{

    @objc @Published var results: [MyNSManagedObjectSubclass]()

    @objc static let sharedInstance: FetchedResultsContainer = {
        let instance = FetchedResultsContainer()

        return instance
    }()
}

我觉得我遗漏了一些明显的东西,因为我对 Swift 和 SwiftUI 还是很陌生。 感谢您的帮助。

好的,退后一步,简单地从头开始重新编码,它就可以正常工作,不需要转换...

List(fetchResultsContainer.results, id: \.identifier) { result in
    if (result.property == 0) {
    //do something
    }
}

我认为演员阵容没有发挥作用的假设是不正确的。 我可能检查了 result.property == false,其中 propertyNSNumber 类型,它给出了一些奇怪的编译错误,导致我走上了错误的道路。