赞助商

ios – Swift:区别为String?相对于字符串

发布时间:2019-07-11 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了ios – Swift:区别为String?相对于字符串脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Downcasting in Swift with as and as?3
是否有区别? String vs. String在斯威夫特?如果是这样,有什么区别,何时应该使用一个与另一个?

解决方法

有一个微妙但重要的区别:

>变量为? String:变量可以是任何类型,如数组,整数等.如果是字符串,则转换为字符串,否则设置为nil.
> variable as String?:variable是一个String?,但存储在一个不透明的类型中,例如AnyObject?,或者它是一个不可选的字符串.如果它不同,则会生成运行时异常.

一些例子:

var x: AnyObject? = "Test"

x as String? // OK,the result is an optional string
x as? String // OK,evaluates to an optional string
"string" as String? // OK,evaluates to optional string

x as? Int // OK,evaluates to nil,it's not an Int
x as Int? // Runtime exception,it's not castable to optional Int

所以:

作为?类型意味着:如果可能,转换为此类型,否则评估为零
>作为类型?意味着:转换为可选类型,因为我知道它是一个可选的类型.我明白如果不是这样,就会生成运行时异常

然而,真正的区别在于?而作为:前者是试图投射,后者是强制投射,如果不可能导致运行时错误.

更新2015年12月14日由于Swift 1.2,作为运算符有3个变体:

作为?是试图投射,如果投射失败,评估为零作为!是强制转换,导致运行时异常,如果cast失败(这是以前做过的)现在是一种特殊类型的转换,用于当转换为等效类型时,通常是桥接类型,例如Swift的String和NSString.

总结

以上是脚本之家为你收集整理的ios – Swift:区别为String?相对于字符串全部内容,希望文章能够帮你解决ios – Swift:区别为String?相对于字符串所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:76874919,请注明来意。
标签: