【问题标题】:Swift - Type 'int' does not conform to protocol 'intervaltype'Swift - 类型“int”不符合协议“intervaltype”
【发布时间】:2015-03-18 17:57:35
【问题描述】:
【问题讨论】:
标签:
swift
switch-statement
【解决方案1】:
数组被声明为可选,因此它的计数类型为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 而不是条件赋值来解开可选项。
【解决方案2】:
试试这个:
let arrayCount:Int = someArray?.count as Int
switch arrayCount
{
case 0:
println("zero")
case 1:
println("one")
default:
println("etc")
}
【解决方案3】:
问题是 arrayCount 是 Int? 类型,所以你应该在使用 switch 时隐式地打开它:
switch arrayCount! { }
如果 arrayCount 为 nil,这是不好的。另一种选择是您可以通过使用合并运算符确保 arrayCount 具有值,如下所示:
let arrayCount: Int = someArray?.count ?? 0
这将按照您尝试使用它的方式在您的代码中工作,并且对于 arrayCount 为 0 也是有意义的。