as !, init是什么意思?在快速?

时间:2015-06-18 05:01:02

标签: swift optional

有时当我使用“as”时,xcode提示失败并建议更改为“as!”。另外我看到一些construstors是“init?”。我知道一些变量可以被定义为可选。构造函数的含义是什么是选择吗?

我用“快速编程语言”查找问题,但未能得到答案。

3 个答案:

答案 0 :(得分:4)

使用

as

当您认为某个类类型的常量或变量实际上可能引用子类的实例时。

使用

as?

将始终返回一个可选值,如果无法进行向下转换,则返回nil。

使用

as!

强制展开该值。使用" as!"当您确定该选项具有值时。

init? 

用于编写可失败的初始化程序。在某些特殊情况下,初始化可能会失败,您可以为您的类或结构编写无法启动的启动器。

答案 1 :(得分:2)

对于你的! - 问题,请查看here。如!强行打开你的可选项。

关于你的init?-Question:这被称为可用的初始化器。基本上这意味着你的init方法可能会失败,它将返回nil。请参阅Swift Blog以供参考。

答案 2 :(得分:2)

如果只有满足某些条件才能创建对象,那么init?有道理,因为它可以返回一个对象或零。至于!你应该只使用它,如果你绝对确定对象属于那种类型,否则使用这个范例:  if let object = obj as? String { ... }