从“字符串”到“字符串”的条件向下转换总是成功 - Swift 错误

Posted

技术标签:

【中文标题】从“字符串”到“字符串”的条件向下转换总是成功 - Swift 错误【英文标题】:Conditional downcast from 'String' to 'String' always succeeds - Swift Error 【发布时间】: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 没有提到任何有关任何可选的内容。 【参考方案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:当然,我只是发现答案的第一个版本有点不清楚。

以上是关于从“字符串”到“字符串”的条件向下转换总是成功 - Swift 错误的主要内容,如果未能解决你的问题,请参考以下文章

从 PFFile 到 PFFile 的条件转换总是成功

Swift optionals - 从'x'到'x'的条件转换警告总是成功

黄色警告:从'AVCaptureVideoPreviewLayer'到'AVCaptureVideoPreviewLayer'的条件转换总是成功的

Firebase swift runTransactionBlock:从“MutableData?”转换到不相关的类型“字符串”总是失败

在数据库同一个表中,我添加都能成功,可是修改数据信息的时候总是提示

从 FIRRemoteConfigValue 转换为不相关的字符串类型总是失败:Firebase、Swift