字符串不符合协议“intervalType”

时间:2015-04-08 07:13:21

标签: ios xcode swift

我收到了错误

  

类型'String'不符合协议'intervalType'

我只在playgroundfile中尝试过此代码,但它也不起作用。

var header = [String:AnyObject]()

header["NachrichtenTyp"] = "2001"

switch header["NachrichtenTyp"] {
case "2001":
    println("2001 Import new file")

default:
    break 
}

我找到了这个帖子:Strings in Switch Statements: 'String' does not conform to protocol 'IntervalType'

但是这个例子在我的操场上也不起作用(Xcode 6.2)

4 个答案:

答案 0 :(得分:3)

您可以通过以下方式解决此问题:

case "2001" as String:
    println("2001 Import new file")

答案 1 :(得分:3)

如果你不想在很多不同的值的情况下多次输入as String,你可以嵌套两个switch语句,如下所示:

var header: [String:AnyObject] = [:]

header["NachrichtenTyp"] = "2001"

for key in header.keys {

  switch header[key] {

    case let str as String:
      switch str {
        case "2001":
          println("2001 Import new file")
        default:
          break
      }

    case let num as Int:
      // ...
      break

    default:
      break
  }

}

答案 2 :(得分:2)

像这样修改:

var header: [String:AnyObject] = [:]

header["NachrichtenTyp"] = "2001" ;

if let header = header["NachrichtenTyp"] as? NSString
{
    switch header
    {
        case "2001":
        println("2001 Import new file")
        break

    default:
        break
    }
}

答案 3 :(得分:2)

你也可以施展你的" NachrichtenTyp"。所以你不需要"作为字符串"每个案例陈述:

    var header: [String:String] = [:]

    header["NachrichtenTyp"] = "2001"

    let ntype:String = header["NachrichtenTyp"]! as String

    switch ntype {
    case "2001":
        println("2001 Import new file")

    default:
        break 
    }