可选类型(optional)

简介: 可选类型(optional)
  • 1.可选类型的介绍
  • 1.注意:
    可选类型时swift中较理解的一个知识点
    暂时先了解,多利用Xcode的提示来使用
    随着学习的深入,慢慢理解其中的原理和好处
  • 2.概念:
    在OC开发中,如果一个变量暂停不使用,可以赋值为0(基本属性类型)或者赋值为空(对象类型)
    在swift开发中,nil也是一个特殊的类型.因为和真实的类型不匹配是不能赋值的(swift是强类型语言)
    但是开发中赋值nil,在所难免.因此推出了可选类型
  • 3.可选类型的取值:
    空值
    有值


  • 2.定义可选类型
    定义一个可选类型有两种写法
    最基本的写法
    语法糖(常用)


// 错误的写法
//let string:String = nil
// 正确的写法
// 注意name的类型是一个可选的类型,但是该可选类型可以存放字符串
// 写法一
let name:Optional<String> = nil
//写法二 定义可选类型(语法糖)常用
let name1:String? = nil


  • 3.可选类型的使用
  • 1.给可选类型赋值
    // 定义可选类型(定义的是字符串)
    var name:String? = nil
    // 错误的写法 因此该可选类型中只能存放字符串
    name = 133
    // 正确的写法
    name = "王冲"
  • 2.取出可选类型的值,取出可选类型的真实值(解包)
    ! 是强行解包的意思,程序员觉得这里面有值,一旦崩溃就会停在此处,错误的提示是让程序员思考一下,代码的安全性会更好
    print(name!)
  • 3.如果可选类型为nil,强制取出其中的值(解包),会出错


image.png


  • 正确的写法
    if name != nil {
    print(name!)
    }
    简单写法:为了让在if语句中可以方便使用string
    可选绑定
    if let str = name {
    print(str)
    }


  • 4.真实应用场景
    目的:让代码更加严谨


// 通过该方法创建的URL,可能有值,也可能没有值.
// 错误写法:如果返回值是nil时,就不能接收了
// 如果字符串中有中文,则返回值为nil,因此该方法的返回值就是一个可选类型,而使用一个NSURL类型接收是错误的
   let url : NSURL = NSURL(string: "www.520it.com")
// 正确写法:使用可选类型来接收
   let url : NSURL? = NSURL(string: "www.520it.com")
// 该方式利用类型推导
   let url = NSURL(string: "www.520it.com")
// 通过url来创建request对象:在使用可选类型前要先进行判断是否有值
// 该语法成为可选绑定(如果url有值就解包赋值给tempURL,并且执行{})
   if let str = url {
      let request = NSURLRequest(url:str as URL)
   }


目录
相关文章
|
6月前
|
安全
Optional
Optional
68 0
|
6月前
|
计算机视觉 Python
解决 NoneType‘ object has no attribute ‘astype’ 问题
解决 NoneType‘ object has no attribute ‘astype’ 问题
139 0
|
4月前
|
并行计算 Serverless API
函数计算操作报错合集之出现 "AttributeError: 'NoneType' object has no attribute 'pop'" 错误,是什么原因
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
151 1
|
6月前
|
算法 测试技术 编译器
【C++ 基本类型 bool 】深入探索C++中的布尔类型Boolean(二 )
【C++ 基本类型 bool 】深入探索C++中的布尔类型Boolean
153 0
|
6月前
|
程序员 编译器 C语言
【C++ 基本类型 bool 】深入探索C++中的布尔类型Boolean(一)
【C++ 基本类型 bool 】深入探索C++中的布尔类型Boolean
568 0
|
6月前
|
缓存 Java
equal 和 == 在对象、变量类型下的不同情况
equal 和 == 在对象、变量类型下的不同情况
34 0
|
存储 Java 开发者
使用Optional优雅避免空指针异常
在编程世界中, 空指针异常(NullPointerException) 无疑是我们最常遇到的"罪魁祸首"之一。它像一片隐蔽的地雷,静静地等待着我们不小心地踏入,给我们的代码带来潜在的威胁。这种问题虽然看似微小,但却无法忽视。甚至可能对整个程序的稳定性产生重大影响。
59 0
C#由Dictionary赋值引发的对引用类型使用的思考
C#由Dictionary赋值引发的对引用类型使用的思考
|
容器
Optional容器类
Optional容器类
49 0