博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
swift 2.0 语法 可选类型
阅读量:5342 次
发布时间:2019-06-15

本文共 1306 字,大约阅读时间需要 4 分钟。

 

import UIKit

 

/*:

可选类型(可以有值, 也可以没有值)

* OC中我们可以给一个对象类型变量赋值为nil或者一个对象, 而在Swift中如果想给一个变量赋值为nil那么必须明确指定为可选类型才可以, 也就是说普通变量是不能赋值为nil

格式数据类型?

以后但凡看到init后面跟上一个?, 就代表初始化方法返回的值是可选的

注意:

* 可选类型是不能直接使用的, 如果向使用一个可选类型的值, 必须对可选类型进行解包 !

* 解包的含义: 告诉系统可选类型的变量, 一定有值, 如果可选类型的值没有值, 我们又进行了强制解包, 那么就会报错

建议

* 初学者学习Swift最最最蛋疼的问题就是? !这种语法, 刚开始可以借助Xocde编译器的提醒来完成? !, 以后写多了就知道什么时候写? , 什么时候写!

*/

 

let str = "http://www.520it.com/"

let url = NSURL(string: str)

print(url!)

 

let num1: Int? = 10

let num2: Int  = 20

// 注意: Swift不推荐我们随便使用强制解包

let sum = num1! + num2

if let temp = num1

{

    let sum = temp + num2

}

 

 

 

/*:

可选绑定

* 专门用于解决强制解包的弊端

* 注意: 开发中如果想使用一个可选类型的值, 也不一定一定用可选绑定, 因为如果可选类型的值较多, 而又都属于同一个逻辑, 那么一不小心就会形成if嵌套

*/

let url2 = NSURL(string: str)

print(url2)

// 取出url2的值赋值给temp, 如果取到了值那么就可以进入if后面的大括号, 如果没有取到值(nil), 就不会进入if后面的大括号

if let abc = url2

{

    print(abc)

}

 

 

let v1: Int? = 10

let v2: Int? = 20

let v3: Int? = 30

 

if let n1 = v1

{

    if let n2 = v2

    {

        if let n3 = v3

        {

            let sum = n1 + n2 + n3

        }

    }

}

 

/*:

guard

* 作用: 类似可选绑定

* 只有条件为假(flase), 才会执行else后面大括号中的代码

格式

guard 条件表达式 else

{

    // 条件为假就会执行

}

*/

 

 

func test()

{

    guard let m1 = v1 else

    {

        print("没有值")

        return

    }

    guard let m2 = v2 else

    {

        print("没有值")

        return

    }

    guard let m3 = v3 else

    {

        print("没有值")

        return

    }

    

    let sum = m1 + m2 + m3

}

test()

 

 

转载于:https://www.cnblogs.com/developer-ios/p/4943580.html

你可能感兴趣的文章
JS基础(下)
查看>>
IntelliJ IDEA default settings 全局默认设置
查看>>
review14
查看>>
这个日本大叔变态地扔了98%的家当后,瞬间从屌丝逆袭成人生赢家!
查看>>
标准io(带缓存IO)
查看>>
typedef和define
查看>>
angular在1.5.5以上文件上传进度监控
查看>>
java中的守护线程
查看>>
上限值可以这么写
查看>>
mysql安装的一些问题
查看>>
varnish简单应用
查看>>
Linux用户深度管理
查看>>
[leetcode]Permutation Sequence
查看>>
[Android] Android studio gradle 插件的版本号和 gradle 的版本号 的对应关系
查看>>
web.xml的配置中<context-param>配置作用
查看>>
Sizeof and Strlen
查看>>
iOS基础--通讯录
查看>>
vue自定义组件的递归
查看>>
vue动态加载不同的组件(分内部和外部组件)
查看>>
vue 异步渲染
查看>>