,ios,swift,xcode,swiftui"/>

首页 > 解决方案 > SwiftUI Bug 修复“无法转换 'Binding 类型的值'到预期类型'绑定<_>?'"

问题描述

我遇到了这个错误:

“无法将 'Binding' 类型的值转换为预期的 'Binding<_> 类型?'”

我想我正在使用过时的 SwiftUI 版本进行编码,但我不能 100% 确定,所以我能得到的任何帮助都会很棒。

我在下面显示了我的代码,因此您可以查看它。

我不确定底部是否重要,但我添加它只是为了安全。

内容视图

import SwiftUI

struct ContentView: View {
    @State private var selection = 0
    @State var networkManager = NetworkManager()
    var body: some View {
        TabView(selection: $selection){

            NavigationView{
            Text("First View")
                .font(.title)
                    .navigationBarTitle(Text("Welcome"))
                }
                .tabItem {
                    VStack {
                        Image(systemName: "star.fill")
                        Text("Welcome")
                    }
                }
                .tag(0)
            NavigationView{

                List(networkManager.featureList.results.identified(by: \.url)) { featured in
                Text(featured.name.capitalized)
                }
                    .navigationBarTitle(Text("Featured"))
                }
                .tabItem {
                    VStack {
                        Image(systemName: "app.badge.fill")
                        Text("Featured")
                    }
                }
                .tag(1)
            NavigationView{
            Text("First View")
                .font(.title)
                    .navigationBarTitle(Text("Repos"))
                }
            .tabItem {
                VStack {
                    Image(systemName: "rectangle.stack.fill")
                    Text("Repos")
                }
            }
            .tag(2)
            NavigationView{
            Text("First View")
                .font(.title)
                    .navigationBarTitle(Text("Request"))
                }
            .tabItem {
                VStack {
                    Image(systemName: "icloud.and.arrow.down.fill")
                    Text("Request")
                }
            }
            .tag(3)
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

接口视图

import Foundation
import SwiftUI
import Combine

class NetworkManager: ObservableObject {
    var didChange = PassthroughSubject<NetworkManager, Never>()
    var featureList = FeaturedApiList(results: []){
        didSet{
            didChange.send(self)
        }
    }

    init(){
        guard let url = URL(string: "https://myurl.com/repos.json") else { return }
        URLSession.shared.dataTask(with: url) { (data, _, _) in
            guard let data = data else { return }
            let featureList = try! JSONDecoder().decode(FeaturedApiList.self, from: data)
            DispatchQueue.main.async {
                self.featureList = featureList

            }
        }.resume()
    }
}

谢谢!

标签: iosswiftxcodeswiftui

解决方案


显示的错误非常令人困惑,但其他一些错误会导致这种错误。

在您的情况下,您可能需要修复第二NavigationViewTabView

            NavigationView{
                //↓Fix this line.
                List(networkManager.featureList.results, id: \.url) { featured in
                    Text(featured.name.capitalized)
                }
                .navigationBarTitle(Text("Featured"))
            }
            .tabItem {
                VStack {
                    Image(systemName: "app.badge.fill")
                    Text("Featured")
                }
            }
            .tag(1)

最好检查这个线程,并始终尝试找到最新的示例或教程。


推荐阅读