前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Swift4.2:Nil cannot be assigned to type 'UnsafeMutablePointer'与Optional chaining

Swift4.2:Nil cannot be assigned to type 'UnsafeMutablePointer'与Optional chaining

作者头像
gojam
发布2019-05-14 14:28:17
1.7K0
发布2019-05-14 14:28:17
举报
文章被收录于专栏:gojam技术备忘录

由于直接抱着对其他语言的认识来使用swift,这个问题苦恼了我很久,当我用关键词“swift 空指针”搜索也没有得到有用信息,直到我发现swift一定要对可能为空的变量做标记——Optional(?&!)。

Optional Chaining(可选类型)

https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html

在C和Objective-C中不存在可选类型,可以也只能用传统方式处理空值,Swift引入可选类型专为处理值可能为空的情况。

声明

声明变量时后面加上?或!,他们的主要区别是用?更优雅。。。

The main difference is that optional chaining fails gracefully when the optional is nil, whereas forced unwrapping triggers a runtime error when the optional is nil.

传值

用!声明Optional变量意味着ta总是被forced unwraping(强制解析):传值时不用加!,如果运行中访问没有值的变量,程序就会崩溃。

用?声明的Optional变量在传值时有两种选择:使用时后面加??提供默认值以替代值可能为nil的情况,或者使用的时候后面加上!,那么情况就和上文一样了。

拓展

判断Optional变量是否为空,可以用if:

代码语言:javascript
复制
if var1 = nil{}

也可以申请一个局部变量(这里假设property1是Optional变量):

代码语言:javascript
复制
if let var1 = obj1.property1? {
    print("\(var1) exists.")
} else {
    print("Nothing.")
}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年12月31日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Optional Chaining(可选类型)
    • 声明
      • 传值
        • 拓展
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档