【问题标题】:Conditional downcast from 'String' to 'String' always succeeds - Swift Error从“字符串”到“字符串”的条件向下转换总是成功 - Swift 错误
【发布时间】:2014-08-23 18:51:54
【问题描述】:

我试图在 Swift 中对字符串进行有效检查,但是我收到错误 Conditional downcast from 'String' to 'String' always succeeds

邮编已创建:

var zipCode = String()

稍后检查有效字符串:

if let code = zipCode as? String {
    println("valid")
}

谁能帮我理解我做错了什么?

【问题讨论】:

  • zipCode在每一刻都是String的一种,如果你已经知道它是a @987654327,为什么还要向下转换为String @?编译器已经足够聪明地警告你不要做这种毫无意义的任务。如果您想使用可选的工作,那将是有道理的,但是您的 OP 没有提到任何有关任何可选的内容。

标签: xcode swift


【解决方案1】:

如果zipCode 可以“取消设置”,则需要将其声明为可选:

var zipCode: String?

这种语法(称为可选绑定):

if let code = zipCode {
    print("valid")

    // use code here
}

用于检查可选变量是否有值,或者它是否仍未设置 (nil)。如果设置了zipCode,那么code 将是一个String 类型的常量,您可以使用它来安全地访问zipCode 的内容在if 块内。

【讨论】:

  • 啊,好吧,我混合了 Optional 和字符串文字的语法。谢谢。
  • String! 是一个隐式展开的可选选项,您可能是指 String? ? - 条件转换 as? String 在这里没有必要,如果已知变量是(可选)字符串,则会导致编译器错误。
  • 感谢@Martin R 让我诚实。
  • @MartinR:隐式展开的“可选”仍然是一种可选
  • @newacct:当然,我只是发现答案的第一个版本有点不清楚。
猜你喜欢
  • 1970-01-01
  • 2018-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-08
  • 2014-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多