swiftui - CoreData 和 FetchRequest,ForEach 和 "Cannot invoke initializer"问题

标签 swiftui ios13 xcode11

我只是迁移到使用 CoreDate 而不是简单的集合。我使用的是 iOS13 beta 8 和 Xcode11 beta 6。

struct BeaconList: View {
    @Environment(\.managedObjectContext) var managedObjectContext
    @FetchRequest(fetchRequest: fetchRequest(), animation: nil) var beacons: FetchedResults<Beacon>

    static func fetchRequest() -> NSFetchRequest<Beacon> {
        let request: NSFetchRequest<Beacon> = Beacon.fetchRequest()
        request.sortDescriptors = [NSSortDescriptor(key: "id", ascending: true)]

        return request
    }

    func buildView(name: String, beacons: [Beacon]) -> AnyView {
        return AnyView (
            Section(header: Text(name)) {
                ForEach(beacons) { beacon in
                    BeaconListEntry(beacon: beacon)
                }
            }
        )
    }

var body: some View {
    TabView {
        NavigationView {
            List {
                buildView(name: "MY BEACONS", beacons: beacons.filter { $0.isActive })
            }
            .navigationBarTitle("Beacons")
            .listStyle(GroupedListStyle())
            .navigationBarItems(trailing: addButton)
        }
        .tabItem {
            Image(systemName: "antenna.radiowaves.left.and.right")
            Text("Beacons")
        }

    }
}

并与 BeaconListEntry如下:
struct BeaconListEntry : View {
   @Binding var beacon: Beacon

    var body: some View {
        HStack {
            Text(verbatim: beacon.name!)
        }
    }
}

(请忽略强制解包,仅供测试)

当我在重写之前将它与集合一起使用时,它起作用了,但现在我收到了消息
Cannot invoke initializer for type 'ForEach<_, _, _>' with an argument list of type '([Beacon], @escaping (Binding<Beacon>) -> BeaconListEntry)'


1. Overloads for 'ForEach<_, _, _>' exist with these partially matching parameter lists: (Data, content: @escaping (Data.Element) -> Content), (Range<Int>, content: @escaping (Int) -> Content)

知道在哪里看吗?这是使用 FetchedResults 的正确方法吗? ?

最佳答案

BeaconListEntry初始化程序需要一个类型为 Binding 的参数,因此您应该按如下方式修改您的电话:

BeaconListEntry(beacon: .constant(beacon))

关于swiftui - CoreData 和 FetchRequest,ForEach 和 "Cannot invoke initializer"问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57673069/

相关文章:

ios - iOS 13中的SceneDelegate,是否有必要?

iOS 13 和 UINavigationBarDelegate::shouldPop()

swift - 尝试重命名变量时 Xcode 11.5 Rename Refactor 失败

swiftui - Xcode 11 中 Swift Combine.framework 的可选链接

swift - 使用多条线创建折线图

ios - SwiftUI, 在工具栏中,菜单和按钮的标签图像大小不同

ios - MKMapView userTrackingMode 在 SwiftUI 中重置

swiftui - 自定义 SwiftUI 颜色的深色模式

objective-c - UIPrintInteractionController 在 iOS 13 测试版设备中无法正常工作

ios - StackView 中的 Xcode 11 ScrollView