可选类型(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)
   }


目录
相关文章
|
网络协议 物联网 iOS开发
iOS - App 与外设间的通信方式
1、前言 一般 iOS 开发者做 App 开发大部分时候都是通过 Http(s) 请求跟后台服务器打交道,做一些信息展示和用户交互。很少涉及到去跟外部硬件设备连接的开发。随着近年来车联网和物联网的兴起,智能家居和智能硬件的逐步火热,越来越多的 App 被开发出来,用来跟硬件设备进行来连接,获取硬件相关信息展示或者发送指令控制硬件来提供服务。
2744 0
|
编解码 数据可视化 API
如果实现图像人脸融合?
本文介绍的API接口是阿里云视觉智能开放平台的图像人脸融合,用以演示。
1125 1
如果实现图像人脸融合?
|
iOS开发 开发者 MacOS
深入探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】 本文将带领读者深入了解Apple最新推出的SwiftUI框架,这一革命性的用户界面构建工具为iOS开发者提供了一种声明式、高效且直观的方式来创建复杂的用户界面。通过分析SwiftUI的核心概念、主要特性以及在实际项目中的应用示例,我们将展示如何利用SwiftUI简化UI代码,提高开发效率,并保持应用程序的高性能和响应性。无论你是iOS开发的新手还是有经验的开发者,本文都将为你提供宝贵的见解和实用的指导。
350 66
|
人工智能 TensorFlow 算法框架/工具
《C++与人工智能库的完美邂逅:环境配置全攻略》
本文介绍了如何在C++环境中配置流行的人工智能库,如TensorFlow、PyTorch和OpenCV,涵盖库的选择、环境准备、具体配置步骤及常见问题解决方法,助力开发者高效构建智能化应用。
253 4
|
人工智能 Python
蓝桥杯练习题(四):Python组之历届试题三十题
关于蓝桥杯Python组历届试题的三十个练习题的总结,包括题目描述、输入输出格式、样例输入输出以及部分题目的解题思路和代码实现。
528 0
蓝桥杯练习题(四):Python组之历届试题三十题
|
安全 数据安全/隐私保护
超简单,让别人也能访问到你的Dash应用
超简单,让别人也能访问到你的Dash应用
508 2
|
Python
Matplotlib 教程 之 Matplotlib 中文显示 4
Matplotlib 中文显示教程,介绍如何通过设置字体参数或下载支持中文的字体库(如思源黑体)来实现在 Matplotlib 中正确显示中文。示例代码展示了如何使用思源黑体设置图表标题和轴标签的中文显示。
270 0
|
存储 安全 Swift
【Swift 开发专栏】使用 Swift 开发一个简单的 iOS 应用
【4月更文挑战第30天】本文介绍了使用 Swift 开发简单 iOS 待办事项应用的步骤。首先,阐述了 iOS 开发的吸引力及 Swift 语言的优势。接着,详细说明了应用的需求和设计,包括添加、查看和删除待办事项的功能。开发步骤包括创建项目、界面搭建、数据存储、功能实现,并提供了相关代码示例。最后,强调了实际开发中需注意的细节和优化,旨在帮助初学者掌握 Swift 和 iOS 开发基础。
411 0
|
JSON 数据处理 API
在Swift中,数据处理和网络请求
在Swift中,数据处理和网络请求
367 4
|
SQL NoSQL Linux
gRPC 基础编码使用手册
gRPC 基础编码使用手册
304 6