【问题标题】:Swift - Type 'int' does not conform to protocol 'intervaltype'Swift - 类型“int”不符合协议“intervaltype”
【发布时间】:2015-03-18 17:57:35
【问题描述】:

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

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")
}

【问题讨论】:

    标签: 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 也是有意义的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-06-22
          • 2017-02-06
          相关资源
          最近更新 更多