Xcode报错:Binding类型无法转换为Int类型问题
Xcode报错:Binding类型无法转换为Int类型问题

Xcode报错:Binding类型无法转换为Int类型问题

问题描述

在SwiftUI文件的构造方法中,当我尝试根据selectedTab变量使用等号判断时,发现Binding类型无法转换为Int类型的错误。

init(selectedTab:Binding<Int>) {
    // 修改待消除区域(模式为足球热区)
    if selectedTab == 4 {   // 报错行
        let startColArea = colCount / 2 - 2
        self.specialEliminationArea = [
            (0...2).flatMap { row in
                (startColArea...startColArea + 3).map { col in (row, col)}
                },
            (rowCount - 3...rowCount - 1).flatMap { row in
                    (2...5).map { col in (row, col) }
                }
            ]
    }
}

报错信息

/Users/fangjunyu.com/Documents/iOS开发/iOS游戏-Faock/Faock/Faock/View/Game.swift:80:24 Referencing operator function '==' on 'BinaryInteger' requires that 'Binding<Int>' conform to 'BinaryInteger'

因为selectedTab是Binding<Int>类型,因此需要取出Binding里的值,才能解决这一问题。

提取Binding值需要使用 .wrappedValue:

if selectedTab.wrappedValue == 4 { }

问题得到解决。

总结

Binding本质是一个引用,指向外面的数据。因此,需要使用 .wrappedValue才能获取到具体的数据。如果不添加 .wrappedValue,Swift会认为在比较Binding<Int>和Int类型,所以就会提示类型不符。

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注