Swift - 类型 'int' 不符合协议 'intervaltype'

Swift - Type 'int' does not conform to protocol 'intervaltype'

我找到了下面的教程,它建议代码应该可以工作。但是,这两种情况都会抛出 type 'int' does not conform to protocol 'intervaltype' errors

Swift切换教程:http://www.codingexplorer.com/loops-switch-statements-ranges-swift/

let arrayCount = someArray?.count

switch arrayCount
{
case 0:
    println("zero")
case 1:
    println("one")
default:
    println("etc")
}

试试这个:

let arrayCount:Int = someArray?.count as Int

switch arrayCount
{
   case 0:
   println("zero")
case 1:
    println("one")
 default:
    println("etc")
}

数组声明为可选,因此其计数类型为 Optional(Int)。在 switch 语句中使用计数之前,有必要检查 someArray 是否为 nil。这是一种方法:

if let arrayCount = someArray?.count {
    switch arrayCount {
        case 0:
            println("zero")
        case 1:
            println("one")
        default:
            println("etc")
    }
}

如果数组不是 nil,赋值将成功,if 块将执行。

如果你确定数组不是nil你可以使用let arrayCount = someArray!.count而不是条件赋值来解包可选。

问题是 arrayCount 是 Int 类型的吗?所以你应该在使用 switch 时隐式地解包它:

switch arrayCount! { }

这在 arrayCount 为 nil 的情况下很糟糕。另一种选择是您可以使用合并运算符确保 arrayCount 具有值,如下所示:

let arrayCount: Int = someArray?.count ?? 0

这将按照您尝试使用它的方式在您的代码中工作,并且对于 arrayCount 为 0 也有意义。