Swift学习(1基础语法)

Swift     基础语法

基本

1.取消了预处理命令

2.取消了指针的概念

3.取消了NS前缀

4.大量将类替换成struct

5.“;” 在同一行用来分割语句,如果不是同一行可以省略

6.可选项

7.playground

8.条件语句”if”,空执行”()”

9.没有非0即真的逻辑

10.switch  (1)可以针对任意类型的值进行分支,不在局限在整数

(2)且一般不需要break。

(3)可以用“,”分割可选值

(4)所有的分支最少需要一条指令,如果没用指令的时候,就用break

11.传统的for循环已经被取消。 统一用for in   ,并支持反转(正序逆序)等

12.i++, ++1 , i—, —i 都已经被取消

13.swift目前没有代码的自动布局,只能用frame或者xib

可选值

1.使用!解包

2.使用 ?? 解包(实际上是一个特殊的三目),优先级较低,一般用()包一下

3.连用语法    if let / var    判断对象的值是否为nil,进入分支后不需要解包 

4.连用语法   guard let       

1.{}在oc中的特殊用法, 常见的tableview的包装

字符串 string  (注意区别NSString)

1.支持遍历 .characters

2.lengthofbytes  返回指定编码状态下的字节长度

3.characters.count 返回展示的长度(推荐使用)

4.将string 转换成 NSString

5.字符换的拼接

6.使用格式字符串

7.字符串的子串 

类型转换 as

数组

1.swift存放类型可以存基础数据类型和结构体不需要包装,oc需要包装NSNumber,NSValue(包装结构体)

2.如果数组类型中的类型不一致,自动推导成NSObject

注意的是,CG 结构体中,还是需要用NSValue包装

3.swift 中还有一种类型,AnyObject —> 任意对象,可以没有父类,这个跟oc所有的类都有父类是不同的

4.遍历数组

  (1) 与oc一样直接用[]去下标 for i in 0..<array.count 

(2)与OC一样用for in 遍历   for s in array

(3)与OC一样用同时遍历下标和内容                 for e in array.enumerated()

(4)swift特有的同事遍历下标和内容 for (n,s) in array.enumerated()

(5)反序遍历 for s in array.reversed()

(6)反序遍历下标&内容(先枚举后反序) for (n,s) in array. enumerated().reversed()

5.数组的增删改

(1)OC中数组可分为不可变NSArray和可变NSMutableArray,swift中用的是let,var来声明

(2)追加元素 array.append(“111”)

(3)修改通过下标定位修改 array[0] = “222”

(4)删除 array.remove(at:3); array.removeAll(keepingCapcity:ture)(移除但是保留空间)

6.数组的初始化可变数组,初始化容量为0,若插入后,如果还要插入容量不够,则容量=当前容量*2。如果初始化指定容量,可以避免插入时重复分配空间

var array = [int]()  

7.数组的合并 var array1 ,let array2。

(1) array1 += array2 要合并的数组的类型必须一致,不同类型   

字典

1.字典的定义,OC中用{} ,swift中用[].   例如  let dict = [“name”:”张三”,“age”:10]

特例: let array= [[string : AnyObject]] = [ [“name”:”张三”,”age”:10] , [“name”:”李四”,”age”:15]]

2.字典的增删改 OC中有可变和不可变,swift中let 定义不可变, var 定义可变

var dict = [“name”:”张三”.”age”:15]

新增 如果key不存在就是新增

dict[“title”] = “大哥”

修改 如果key存在就是修改

dict[“name”] = “李四”

删除  —指定key删除

dict.removeValue(forKey:“name”)

注意:字典是通过key来定位的,且key必须是可以 hash的(每一个key可以转换成一个唯一的整数)

3.字典的遍历, OC遍历只能通过遍历key,然后才能取值

for e in dict e 是一个值对 用e.key  e.value  分别取值

for (key,value) in dict    key,value 分别取值

11.字典的合并

var dict1 =  [“name”:”张三”.”age”:15]

let  dict2 = [“name”:”李四”,“title”:“大哥”]

字典不能和数组类似的直接相加!!!

for e in dict2 { 

dict1[e.key] = dict2[e.key]

}

合并的过程,如果key存在只是修改,不存在是新增

//demo下载地址:https://github.com/fushengit/Learn-Swift

原文地址:https://www.cnblogs.com/fusheng-it/p/6842111.html