• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swift-'!','?'用法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
///'!','?','as'的用法

///'!'与'?'用法与可选类型(Optional)

///首先要了解Optional类型包括什么,

///Optional类型的值包括: 1.nil 2.值

///声明Optional类型变量如: var arr : NSMutableArray?(整个NSMutableArray?是一个类型叫可选类型),与之对应的是:

///var arr : NSMutableArray(非可选类型)

///区别在于1.非可选类型,声明后想使用必须赋值,否则变量无值,使用系统报错2.可选类型,声明后默认当没有值的时候就会给一个nil值,使用系统不会报错.

///Optional类型和非Optional类型

/*可选型数组,声明就有nil值*/

/*可选类型其实 是一个枚举类型*/

  enum Optional : NilLiteralConvertible {

         case None

         case Some(T)

 }

 /*全写Optional类型变量*/

 var arr: Optional<NSMutableArray> = nil 

 var arr: NSMutableArray?

 

 


/*不可选数组,声明必须赋值不赋值,否则无法使用*/

vararr1 :NSMutableArray

//打印在不赋值的情况下为nil

DEBUGLOG("可选数组Arr:\(arr)")

//打印在不赋值的情况下系统报错

//DEBUGLOG("不可选数组\(arr1)")

///'!','?'放在变量后

//打印的时候有两种一个是'!'一个是'?'分别代表着什么呢?

//用'!'强制拆包把原来可选(Optional)数组的非nil值取出来,当可选数组arr通过强制拆包没有非nil值的时候,运行时系统就会抛出错误.

//用'?'来取arr里面的可选类型值,当arr没有值的时候,可选类型会返回一个nil值来供我们使用

/*编译器抛出错误unexpectedly found nil while unwrapping an Optional value*/

//DEBUGLOG(arr![0])

/*正常运行*/

DEBUGLOG(arr?[0])

///中间有个小插曲演示一下,这个时候我给可选数组(Optional)赋值了一个空数组,再次打印arr?[0]

/*因为可选数组已经有有值了是一个空数组[],我们arr?并不是像上面那样判断了arr初始是否为空,为空赋值nil,不为空取值.而是因为arr?判断数组确实有值,值为[](空数组),取出空数组,所以提示数组越界*/

arr = []

/*这个时候系统抛出一个错误: -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array*/

//DEBUGLOG(arr?[0])

///可选变量的值可以当作if的条件语句,有值为真,否则为假

ifletvalue = arr {

DEBUGLOG("有值\(value)")

}else{

DEBUGLOG("无值")

}

///总结:在使用Optional变量的时候,我们一般如下操作:

///1.当需要使用Optional变量的值的时候,我们对Optional变量'.!'来强制拆包取非nil值,当然,如果Optional没有非nil值,会crash.

///2.当需要使用Optional变量的方法的时候,我们对Optional变量'.?'来进行取值,如果有值返回值,无值返回nil.

///3.可选变量的值可以当作if的条件语句,有值为真,否则为假

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
swift项目实战FoodPin目录发布时间:2022-07-13
下一篇:
swift中的传值发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap