开胃菜
交换两个变量的值,使用元组(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库中的方法 









网友评论