1. var 与 let
var -- 声明变量标示符
let -- 声明常量标示符,不可二次赋值
note:固定值尽量用let(eg:布局时候的一些数值),防止手贱误改(这是优于obj-C的)
2. 初始化的语法
swift 是一种类型安全语言,即不强制你必须声明类型,更强大跟和谐
var xxx(obj-Name or num-Name) : xxx(Type Name) = xxx
—>简写: var xxx(obj-Name or num-Name) = xxx (swift的类型安全机制会自动识别第一次赋值的值的类型为该变量的类型,即:类型推断)
let xxx(obj-Name or num-Name) : xxx(Type Name) = xxx
—>简写: let xxx(obj-Name or num-Name) = xxx (swift的类型安全机制会自动识别第一次赋值的值的类型为该常量的类型,即:类型推断)
note: “Type?”这种类型的变量是optional(可选类型)swift独有,是一个容器可以包含Int or String,
log时调试区会打印如下Optional(所包含的值),获取其包含值有两种方法:
eg:
(1) let aaa : xxxType? = xxx
printIn(aaa) —> Optional(xxx)
if aaa != nil {
printIn(aaa!) —> xxx note: 强制拆包——加‘!’
}
(2) let aaa : xxxType?
let bbb : xxxType! = aaa note:隐式拆包,不存在强制拆包nil隐患
let aaa : String? = "32"
if let aaaTemp = aaa.toInt() {aaaTemp的type -> Int
}
3. 常量字符串方法
"在这里输入你想要的字符串" —>oc: @"在这里输入你想要的字符串"
4. 神奇的\()语法
\()用在常量字符串方法里(eg:"xxx\()xxx")
在括号—>\(Int Type or String Type)
5. nil
在swift里面的nil与obj-C不同,nil不只是指向nil-obj的空指针也可以是空数值,空结构体(但是没有空元组),统一称为空
6. tuples(元组,swift新type)
let xxx = (xxx1(Int Type or String Type),myKey:xxx2(Int Type or String Type),xxx3(Int Type or String Type))
神奇的用法:
let (aaa,bbb,ccc) = xxx
printIn(aaa) or printIn(xxx.0) —> xxx1
printIn(bbb) or printIn(xxx.myKey) —> xxx2
printIn(ccc) —> xxx3
note: 建议用在提示警告的组合string
7. 定义的参数名支持汉字和原生输入法表情以及π、α等希腊字母,但是不能使用空格、横线(-)、数学符号、图形符号、以及私有编码指针(like:万国码、搜狗表情等)
8. String直接支持apple原生输入法的表情,若项目需求只要求原生输入发的表情就不用再去搞自定义编码的事儿了(还需要直接别的表情库也省了好多事儿)
9. Bool(布尔型)
swift的布尔型(Bool)不同于oc的模糊化(2进制存储的最后一位判别),只有两个值true和false
note:if语句的条件也必须是Bool(友情提示)
10. Assertions(断言)
assert(条件,描述)如果条件成立,编译绕过description,否则崩溃在该行调试板也会log xxx fail :description …
note:建议debug使用(即:代码测试用例是使用)
11. Optional语法的用处介绍
var xxx : xxxType? —> 该语法给xxx 一个nil xxxType值,有初始化(init)的功效
12. 数值型
整形
Int—> 默认等同编译系统的bit数
Int8、Int16、Int32(4、4s、5、ios7系统5s)、Int64(mac、ios8系统5s、6、6plus)
友情提示:5s比较特殊处于apple的跨时代机型(第一次尝试在iPhone上使用64bit的cpu,但是由于ios7系统是32bit的操作系统所以才会有这样的区别)
UInt—> 默认等同编译系统的bit数
UInt8、UInt16、UInt32、UInt64
浮点型
Float —> 单精度
Double —> 双精度
进制数
0b?? —> 二进制
0o?? —> 八进制
0x?? —> 十六进制
note: 在swift中数字中间插入 ‘_’ 不影响编译是读取数字可以更清晰更直观的看到赋的位数长值 eg: 1_000_112.111_212 —> 1000112.111212,三位一插岂不是看的更爽~~
冷门用法: 在swift中可以这么搞
12.5e1 = 125 —> 十进制中en(n为整形),意为: 12.5乘以10的n次方
0xCp-2 = 3 —> 十六进制中pn(n为整形),意为: C乘以2的n次方
13. 符号(在这里只介swift里绍特殊的)
‘+’ 可以用来拼接字符串了,程序猿们曾经的YY被apple给你实现咯
‘%’ 可以负数取余数了,可以取浮点型数值的余数了
note: 余数的符号(正负)取决于被取余数的正负,被取余数为正则余数为正,被取余数为负则余数为负
‘===’ or ‘!==’判断两个object是否相同或不同
‘=’ 的作用只用来赋值
‘??’的作用等效于三段式拆包,个人认为是特意为安全拆包缩写符号
eg:
let a : xxxType? = xx
let b : xxxType(与a属同类型) = xxx
let resut1 = a ?? b
let result2 = a != b ? a! : b
let result3 = a != nil ? a! : b
note: result1、result2、result3结果一样,第三个是官方书的解释,但第二种其实也是一个逻辑,只不过我闲的蛋疼扩展了一下
note:还存在这么一个状况,我不研究明白是什么原因,是高级语言的语法糖漏洞吗,还是有其他原因,有知道的博友留言告诉小编我,让小编长长姿势,
我也会及时跟进修改博文,让广大程序叼们了解
var a6 : Int = 2
let b6 : Int? = 3
let res = a6 ?? b6
res —> Optional(2)
‘…’ or ‘..>’ or ‘..<’ 这类符号用在通常循环语句中
eg:1 … 5 or 1 ..<6 —> 1到5
14. 字典与数组
字典
初始化空常量字典
let emptyDic = [String: Float]()
let emptDoc = [:]
初始化空变量字典
var emptDoc = [:]
数组
初始化空常量数组
let emptyArray = [String]()
let emptArr = []
初始化空变量数组
var emptyArr = [String]()var emptyArr = []
原文链接:https://www.f2er.com/swift/327470.html