Er.*_*hah 1 optional swift xcode6 ios8
我在下面声明:
@IBOutlet var hw_label : UILabel!
Run Code Online (Sandbox Code Playgroud)
如果我上面写的比它成功运行,
但是当我声明如下:
@IBOutlet var hw_label : UILabel!
and
hw_label.text = "Hello World"
Run Code Online (Sandbox Code Playgroud)
它显示错误为图像.
我只是想知道'!'之间有什么区别?和'?'.
或者为什么我们要用这个..?
Swift中有两种类型的变量.
可选变量:最短的描述是可选变量/对象包含属性"object-returns-nil-when-non-exist".在objC中,我们创建的几乎所有对象都只是可选变量.也就是说,对象具有属性"object-returns-nil-when-non-exist"行为.但是,这种特殊行为并不是一直需要的.那么,要识别选项符号'?' 和'!' 已经用过.同样有两种类型的期权......
正常选项:
var normalOptional : String?
Run Code Online (Sandbox Code Playgroud)
隐含未解包的期权:
var specialOptional : String!
Run Code Online (Sandbox Code Playgroud)
两者都具有"可选"行为,但不同之处在于"隐式解包可选"也可以用作普通(非可选)值.
例如,indexPath变量在函数(cellForRowAtIndex)参数列表中通过默认的tableview委托方法声明.调用cellForRowAtIndex时存在行值.在那里,indexPath变量在函数(cellForRowAtIndex)参数列表中声明.因此,从'indexPath'解开'row'值如下.
var rowValue = indexPath?.row // variable rowValue inferred as optional Int value
or
var rowValue = indexPath!.row// variable rowValue inferred as normal Int value
Run Code Online (Sandbox Code Playgroud)
注意:使用'!'时 展开时,必须非常确定特定的类是否存在(包含值).
希望这个链接能给你更多的想法.swift中可选变量/常量的预期用途是什么?
| 归档时间: |
|
| 查看次数: |
450 次 |
| 最近记录: |