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 也有意义。
我找到了下面的教程,它建议代码应该可以工作。但是,这两种情况都会抛出 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 也有意义。