无法将“Binding<Int>”类型的值转换为预期的参数类型“Binding<_>”

Posted

技术标签:

【中文标题】无法将“Binding<Int>”类型的值转换为预期的参数类型“Binding<_>”【英文标题】:Cannot convert value of type 'Binding<Int>' to expected argument type 'Binding<_>' 【发布时间】:2019-11-06 06:32:42 【问题描述】:

我正在尝试使用以下代码在 SwiftUI 中创建 TabView

@State var selection = 0

var body: some View 
    TabView(selection: $selection) 
        DataGridPage(type: "media").tabItem 
            Image(systemName: "photo.on.rectangle")
                .imageScale(.large)
                .foregroundColor(.yellow)
        
        .tag(1)

        DataGridPage(type: "files").tabItem 
            Image(systemName: "doc.on.doc")
                .imageScale(.large)
                .foregroundColor(.yellow)
        
        .tag(2)
    

但我收到错误 Cannot convert value of type 'Binding&lt;Int&gt;' to expected argument type 'Binding&lt;_&gt;'。我看到变量selection 是整数,这是正确的类型,但由于某种原因警告仍然存在。

【问题讨论】:

【参考方案1】:

我发现了问题所在。问题是TabView 会显示此错误,即使关闭中存在一些错误。所以创建TabView 的代码是正确的,但问题是我初始化DataGridPage 的方式。我在DataGridPage 内将type 属性的名称更改为data,但这里我仍在使用type 属性。我修复了它,它停止向我显示警告。

我认为 SwiftUI 是一个新框架,它在调试方面还有很多改进。我希望它在未来会成熟,我们将能够指出确切的错误而不是这种模糊的陈述。

新代码现在如下所示:

@State var selection = 0

var body: some View 
    TabView(selection: $selection) 
        DataGridPage(data: "media").tabItem 
            Image(systemName: "photo.on.rectangle")
                .imageScale(.large)
                .foregroundColor(.yellow)
        
        .tag(1)

        DataGridPage(data: "files").tabItem 
            Image(systemName: "doc.on.doc")
                .imageScale(.large)
                .foregroundColor(.yellow)
        
        .tag(2)
    

希望它可以帮助遇到类似问题的人。

【讨论】:

遇到了同样的问题,现在可以解决。谢谢 我的问题看起来很相似,但我不记得构造我的视图(括号)。所以就像我做了 DataGridPage.tabItem ... 而不是 DataGridPage().tabItem ... 在我的情况下,视图在构造函数中没有接受任何参数。

以上是关于无法将“Binding<Int>”类型的值转换为预期的参数类型“Binding<_>”的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server Management Studio 无法将类型为“System.__ComObject

无法将类型为“System.Collections.Generic.List`1[EPMS.Domain.SingleItem]”的对象强制转换为类型“EPMS

C# 无法将类型为“System.Byte[]”的对象强制转换为类型“System.Data.DataTable

无法将类型“[PHAsset]”的值分配给类型“UIImageView!”

无法将 [Struct] 类型的值快速转换为 [string] 类型

无法将类型“()”的值转换为预期的参数类型“字符串”