SWIFT中有一个类型定义叫可选值,在变量类型后面加一个?号即可定义一个类型为Optional Value的变量,当在使用变量时要用到强制解包!.

如在页面上有一个可选输入年龄的框,在接受数据的时间就可能要定义一个可选值的变量.

var age:Int? = 10

var str:String = "Age is "+String(age!)

以下为从一个数组中取数据,然后判断是否存在值

var numberOfLegs = ["ant":6, "snake":0, "dog":4]

var possibleLegCount:Int? = numberOfLegs["fish"] //没有找到相应的键值将会返回nil

判断possibleLegCount是否是nil

if possibleLegCount == nil{

println("not found")

}else{

var legCount = possibleLegCount! //强制解包

println("fish's legs is \(legCount)")

println("fish's legs is \(possibleLegCount)")  //用这种占位方式会自动解包

}

此时的possibleLegCount一定要是Optional Value类型,否则会报错.此时程序将会验证可选值是否可以正常解包,正常的话将会把值解包后赋值给legCount变量

if let legCount = possibleLegCount {

println("fish's legs is \(legCount)")

}

另外SWIFT中的可能值类型其实是一个Enumeration,如下代码将会打印"My name is Ken",如果将myName的值去掉将会打印"I don't have name"

var myName:String? = "Ken"

switch myName{

case .Some(let name):

println("My name is \(name)")

case nil:

println("I don't have name ")

default:

println("default")

}

SWIFT Optional Value的更多相关文章

  1. Swift -> Optional嵌套 探讨

    准备运动:Optional 的介绍 王巍的<Swifter>一书中,介绍了一个有用的命令:在 LLDB 中输入 fr v -R foo,可以查看foo 这个变量的内存构成.我们稍后的分析将 ...

  2. Swift optional详解

    学习了一阵swift对于optional类型一直不是很了解,为此特意学习了一下,通过观看斯坦福大学的视频,将他所讲的进行了总结 optional 有两个值 1.not set (未设) 代表这个值没有 ...

  3. Swift Optional

    拆包和解包的原因: 其实所谓的 nil 就是 Optional.None, 非 nil 就是Optional.Some, 然后会通过Some(T)包装(wrap)原始值,这也是为什么在使用 Optio ...

  4. Swift Optional Chaining

    Optional Chaining介绍 关于「optional chaining」,<The Swift Programming Language>是这么描述的: Optional cha ...

  5. Swift 烧脑体操(一) - Optional 的嵌套

    前言 Swift 其实比 Objective-C 复杂很多,相对于出生于上世纪 80 年代的 Objective-C 来说,Swift 融入了大量新特性.这也使得我们学习掌握这门语言变得相对来说更加困 ...

  6. 学习swift语言的快速入门教程推荐

    随着苹果产品越来越火爆,苹果新推出的swift必定将在很大程度上代替oc语言.学好swift语言,对于IOS工程师来讲,已经是一门必备技能. 有一些比较好的英文版教程,值得学习. 1. Swift T ...

  7. Swift 烧脑体操一

    Swift 烧脑体操(一) - Optional 的嵌套   前言 Swift 其实比 Objective-C 复杂很多,相对于出生于上世纪 80 年代的 Objective-C 来说,Swift 融 ...

  8. chart crash

    * thread #155: tid = 0x1fcc10, 0x0000000107626745 gpxj`static gpxj.ChartUtils.decimals (gpxj.ChartUt ...

  9. iOS完全自学手册——[二]Hello World工程

    1.前言 写第二篇文章之前,我在想第二篇应该怎么写?后来觉得与其写Objective-C语言的相关语法,不如直接开始写个小项目.语法简单入门即可.因为,即便把语法看的很深到最后还是不一定能做项目,运用 ...

随机推荐

  1. UVa 1152 和为0的4个值(二分查找)

    https://vjudge.net/problem/UVA-1152 题意:给定4个n元素集合A,B,C,D,要求分别从中选取一个元素a,b,c,d,使得a+b+c+d=0.问有多少种取法. 思路: ...

  2. React Native控件之Switch开关

    这个组件很简单 主要有两个属性:开.关....呵呵哒,,, import React,{Component}from 'react'; import { AppRegistry, StyleSheet ...

  3. C# DataTable按指定列排序

    C#提供的内置对象DataTable功能特别的强大,如果我们需要对DataTable中的某一列进行排序怎么处理呢,具体代码如下: DataTable dt = new DataTable(); dt. ...

  4. C#中类的序列化和反序列化

    说明:本文演示将类序列化后写入记事本并从记事本读取反序列化为对象1.首先创建一个类,同时类必须标识为Serializable,如下: [Serializable] public class Regio ...

  5. DataGridView1

    for (int i = 0; i < DataGridView1.SelectedRows.Count; i++)    { //第i行第一列 String ai1= DataGridView ...

  6. [Java学习] Java instanceof 运算符

    多态性带来了一个问题,就是如何判断一个变量所实际引用的对象的类型 . C++使用runtime-type information(RTTI),Java 使用 instanceof 操作符. insta ...

  7. js-Client-side web APIs

    APIs https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs/ 简介: 应用程序接口(API) ...

  8. 『Scrapy』爬虫框架入门

    框架结构 引擎:处于中央位置协调工作的模块 spiders:生成需求url直接处理响应的单元 调度器:生成url队列(包括去重等) 下载器:直接和互联网打交道的单元 管道:持久化存储的单元 框架安装 ...

  9. Jenkins安装以及邮件配置

    Jenkins介绍 Jenkins是一个java开发的.开源的.非常好用持续集成的工具,它能帮我们实现自动化部署环境.测试.打包等等的工作,还可以在构建任务成功或者失败之后给我们发邮件通知. 什么叫持 ...

  10. hdu-2509-反nim博弈

    Be the Winner Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...