Swift数据类型,常量、变量、元组
数据类型
Swift分为值类型和引用类型:
1、值类型分为枚举enum 和 结构体 struct
- 枚举:Optional
- 结构体:Bool、Int、Float、Double、Character、String、Array、Dictionary、Set
2、引用类型 :class
Swift 与OC对比
1、其中字符串,数组,字典,集合在OC中为引用类型,在Swift中为值类型
2、Swift是强类型语言,所有的变量必须先声明,后使用;指定类型的变量只能接收类型与之匹配的值
3、Swift中Bool只有true和false。而OC中非0即为真
4、新增可选类型Optional
常量 与 变量
常量一旦设定,在程序运行时就无法修改,常量可以是任何的数据类型,用let修饰
变量指定类型,类型决定占用内存大小,变量的值可以修改,用var修饰
var age1 = 12
let age2 = 26
age1 = age1 + 1
age2 = age2 + 1 //这里对常量进行修改,会报错
常量或者变量在初始化的时候可加上类型标注
var constantName:<data type> = <optional initial value>
可选类型
Swift 的可选(Optional)类型,表示值可以为空。最初使用Swift的时候被这个可选类型很难受,后端接口返回的字符串数据解析后是可选类型字符串,显示在页面上成Optional("xxxx")的样子,值为空的时候使用强制解包'!'又会发生运行时错误
var age: Int?
var age: Optional<Int>
可选类型在使用的时候需要进行解包,解包方式有以下几种:
1、强制解包
if age != nil {
print(age!)//只有确定值非空的时候才能使用强制解包
}
2、可选值绑定 与 自动解包
可以使用可选项绑定来判断可选项是否包含值
如果包含就自动解包,把值赋给一个临时的常量(let)或者变量(var),并返回true,否则返回false
var str:String!
str = "Hello, Swift!"
if let str1 = str {
print(str1)
}else{
print("myString 值为 nil")
}
3、空合并运算符 '??' ,这个用起来比较方便
a ?? b
- a是可选项
- b可以是可选项,也可以是非可选项
- a和b的存储类型必须相同
- 如果a不为nil,返回a
- 如果a为nil,返回b
- 如果b不为可选项,返回a时会自动解包
下面代码可以做到str为空时不显示,str非空的时候显示解包后的值
leb.text = optionStr ?? ""
网友评论