开胃菜
交换两个变量的值,使用元组(a,b) = (b,a)
系统自带的交换函数 : swap(&a,&b)
数组
获取数组的基本信息 (查询)
-
count: 元素个数 -
isEmpty: 是否为空,返回布尔值 -
[]危险,可能越界 : 传入下标,取出对应下标,或者针对对应下标的元素进行修改 -
first,last: 取出第一个和最后一个元素#### -
minElement,maxElemtnt: 最小/最大元素 -
contains: 包含 -> Bool -
indexOf: 查询下标 -
for-in: 遍历-
enumerat: 同时遍历下标和元素
-
增 (必须是var)
-
append: 添加元素 -
+=: 添加数组 -
insert危险,可能越界: 插入元素到index,插入后的元素在该位子,原来的元素后推
删
removeLastremoveFirst-
removeAtIndex()危险,可能越界 -
removeRange:0..<4可以给一个范围 removeAll
改
-
[]危险 : 直接修改下标 -
[0..<4] = []: 先删除原来的区间,再添加新的数组到0下标的位置 -
sort: 排序,返回从小到大排序好的数组. -
sortInPlace: 排序后修改原来的数组 -
sort(isOrderedBefore: ): 根据传入的函数/闭包(匿名函数) : (Int,Int) -> Bool 来排序-
sort(>)>比较符号本身就是一个函数
-
字典
查
-
isEmpty: 是否为空 -> Bool -
Array(dict.keys): 获取所有的键,转换为数组 -
Array(dict.Values): 获取所有的值,转换为数组 -
for(key,value) in dict: 通过元组,第一个是key,第二个是value,名字可以自己取.来遍历 -
=: 对比字典的键值对是否都一样.
增,改
-
[]: 增加值或者修改值 -
updateValue: 会返回旧的值
var dict : [String : String] = [:]
dict.updateValue("123456", forKey: "password") // 返回nil
let oldPassword = dict.updateValue("123456", forKey: "password")//返回 "123456"
if let oldPassword = oldPassword , dict["password"] == oldPassword{
print("两次修改的密码一样,请重新输入")//会打印
}
删除
dict["key"] = nil-
removeValueForKey("key"): 返回旧的值,如果存在.否则返回nil removeAll
集合
- 声明
var skills : Set<String> = ["Swift","OC"] - 集合是无序的,数组是有序的
- 集合中不会重复
-
Set()将数组强转为集合
查
-
isEmpty: 是否为空 -
fitst: 因为是无序的,所以认为是随机取出 -
contains: 是否包含 -
for skill in skillS: 遍历集合
增
-
insert: 如果已经存在不会改变集合,->返回整个集合
删
-
remove: 删除元素,如果存在返回删除的元素
改
没有接口直接修改.
并集
-
setA.union(setB): 并集两个集合,返回两个集合中所有的元素去重. 不会修改集合 -
setA.unioInPlace(setB): A集合会改变
没有inPlace是+
有是+=
交集
setA.intersect(setB) : 返回共有的元素
有inPlace就会修改A集合为只有共有的元素
集合减法
setA.subtract(setB) -> A - A.union(B)
setA.subtract(setB) -> A -= A.union(B)
亦或,判断只出现了一次的元素. 两个集合的并集减去交集
- setA.exclusiveOr(setB) -> setA + setB - setA.union(setB)
判断子集
-
setA.isSubsetOf(setB)-> B是不是A的子集 -
setA.isStrictSubsetOf(setB)-> B是不是A的真子集
超集 和子集相反
setA.isSupersetOf(setB)setA.isStrictSupersetOf(setB)
相离
-
setA.isDisjoinWith(setB)-> 有没有交集
字符串
Character
一个中文,表情,UTF-8码,注音符等都只占一个Character.
因为Swift的字符串是基于unicodescalar的.

`str.characters.count` 即人类理解的几个字符
index
因为以上原因,String不可以直接使用
[]来取出字符. 只能使用Index
let str = "123456789";
let subFrom3 = str.substring(from: str.index(str.startIndex, offsetBy: 3))
let subTo3 = str.substring(to: str.index(str.startIndex, offsetBy: 3))
print(subFrom3,subTo3)
//截取区间
let subRange = str.index(str.startIndex, offsetBy: 2)..<str.index(str.endIndex, offsetBy: -3)
let subRangeStr = str.substring(with: subRange)
常用方法
-
uppercased(): 全部转换为大写 -
lowercased(): 全部转换为小写 -
hasPrefix():包含前缀 -> Bool -
hasSuffix(): 包含后缀 -> Bool -
contains(): 是否包含 -> Bool -
NSString as String: 将NSString 转换成String. 这样来使用NSString库中的方法
