开胃菜
交换两个变量的值,使用元组(a,b) = (b,a)
系统自带的交换函数 : swap(&a,&b)
数组
获取数组的基本信息 (查询)
-
count
: 元素个数 -
isEmpty
: 是否为空,返回布尔值 -
[]
危险,可能越界 : 传入下标,取出对应下标,或者针对对应下标的元素进行修改 -
first
,last
: 取出第一个和最后一个元素#### -
minElement
,maxElemtnt
: 最小/最大元素 -
contains
: 包含 -> Bool -
indexOf
: 查询下标 -
for-in
: 遍历-
enumerat
: 同时遍历下标和元素
-
增 (必须是var)
-
append
: 添加元素 -
+=
: 添加数组 -
insert
危险,可能越界: 插入元素到index
,插入后的元素在该位子,原来的元素后推
删
removeLast
removeFirst
-
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
的.
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库中的方法