ios - 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()
}
}
谢谢!
解决方案
显示的错误非常令人困惑,但其他一些错误会导致这种错误。
在您的情况下,您可能需要修复第二NavigationView
个TabView
:
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)
最好检查这个线程,并始终尝试找到最新的示例或教程。
推荐阅读
- web-component - 当使用 webcomponents-loader 而不是 webcomponents-lite
- c# - xamarin forms - bind TapGestureRecognizer to code-behind rather than view model
- python - 更新 PyTorch 中的特定向量元素
- javascript - 在Angular 6中的更多字段之后过滤管道
- html - Bootstrap 4 导航栏链接不可见,但出现导航栏品牌
- python - 使用python 3.4的用户名和密码程序
- python - 脚本 Python 连接并运行查询 RMAN (ORACLE) 命令
- ios - 如何使用swift 4在ios中使用Material Components实现多行文本字段
- amazon-web-services - 用于不同实例和相同端口的 aws 负载均衡器
- typo3 - Typo3 9.5:如何在 Fluid 中渲染某些页面的某些 colPos 的内容?