从“字符串”到“字符串”的条件向下转换总是成功 - 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 错误的主要内容,如果未能解决你的问题,请参考以下文章
Swift optionals - 从'x'到'x'的条件转换警告总是成功
黄色警告:从'AVCaptureVideoPreviewLayer'到'AVCaptureVideoPreviewLayer'的条件转换总是成功的
Firebase swift runTransactionBlock:从“MutableData?”转换到不相关的类型“字符串”总是失败