ios - var someString = “Some String” 和 var someString : String = “Some String” , 之间的区别 var someString = “Some String” as string

标签 ios swift

谁能解释一下区别

var someString = “Some String”
var someString: String = “Some String”
var someString = “Some String” as String
var someString = “Some String” as! String
var someString = “Some String” as? String

最佳答案

let someString = “Some String”
let someString: String = “Some String”

对于这两个:

两者之间的运行时效率差异为零。在编译期间,Swift 会推断类型并将其写入。但是一旦编译,这两个语句是相同的。

let someString = “Some String” as String

意味着如果 someString 值不是字符串,则将其转换为字符串。

let someString = “Some String” as! String

意味着你强行将“Some String”转换为字符串,但如果它不能转换为字符串,那么它会使应用程序崩溃。

let someString = “Some String” as? String

意味着您可以选择将 “Some String” 转换为字符串,这意味着如果它不能转换为字符串,那么它将返回 nil 但此时不会崩溃。

对于最后 3 条语句,它可以编译并工作,但是将 String 转换为 String 肯定是错误的。无需将 String 转换为 String

最后两个 as?as! 在您的情况下总是会成功。

考虑下面的例子:

let stringObject: AnyObject = "Some String"
let someString3 = stringObject as! String
let someString5 = stringObject as? String

这是您需要转换的时候。仅当您知道它是一个字符串时才使用 as!。如果您不知道它是否为字符串,请使用 as?

只有在你确定否则使用条件转换时才使用 as! 强制向下转换:

if let someString5 = stringObject as? String {
    println(someString5)
}

关于ios - var someString = “Some String” 和 var someString : String = “Some String” , 之间的区别 var someString = “Some String” as string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30678926/

相关文章:

iphone - 更快的iPhone PNG动画

ios - 滚动时自定义表格 View 单元格绘图高度错误

ios - 从 UIButton 按下处理程序获取关联 UIView 的最简洁方法

swift - "Value of optional type ' 字符串? ' not unwrapped; did you mean to use ' ! ' or ' ? ' ?"

swift - 使用 Swift 中的 Firebase 应用到应用推送通知

xcode - Swift Xcode6B3 - 字节交换 - undefined symbol "__OSSwapInt16"

ios - 保存录制的音频 (Swift)

ios - 所有播放列表似乎都缺少订阅者

ios - 顶部/底部、左/右边缘有白线的 PDF 渲染

ios - 安全区域问题 - 在 iPhone X 上正常,但在其他人上不行