Я получил ListView в SwiftUI и хочу сгенерировать RowViews в зависимости от заданного свойства. Поэтому я хочу проверить свойство элемента в ForEach l oop.
Xcode не распознает тип элемента, поэтому я хочу привести элемент к правильный класс, который является подклассом NSManagedObject .
Я создал подкласс NSManagedObject из xcdatamodeld (Editor -> Create NSManagedObject Subclass ...).
Подкласс NSManagedObject - это создан в objective- c, и я добавил файл .h в заголовок моста.
У меня нет проблем с работой с подклассом NSManagedObject в остальной части проекта. Я даже могу создать свойство этого типа в той же структуре, например:
struct MyListView: View {
var test : MyNSManagedObjectSubclass //Xcode does recognize it here
По какой-то причине Xcode не распознает подкласс NSManagedObject внутри ForEach L oop.
код выглядит так:
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. Цените вашу помощь.