可選類型
定義一個(gè)可選類型變量
var name:String?
var name1: Optional<String>
當(dāng)你聲明一個(gè)可選變量或者可選屬性的時(shí)候沒有提供初始值, 它的值默認(rèn)為 nil
訪問可選類型包含的值的時(shí)候需要解包
,
var name:String?
name = "jake";
let value = name!
當(dāng)可選類型包含的值為nil的時(shí)候,強(qiáng)制解包會(huì)運(yùn)行時(shí)錯(cuò)誤
,需要判斷
if name != nil {
let value = name!
}
可選類型類似于Object-C中指針的nil值,但是nil只對(duì)類有用,而可選類型對(duì)所有的值都可用,并且更安全
自動(dòng)解析
- 聲明可選類型的時(shí)候使用!替換?, 這樣可選變量在使用時(shí)就不需要加一個(gè)!來獲取值,它會(huì)自動(dòng)解析
var name:String!
name = nil
if name != nil {
let value = name
}
可選綁定
var name:String?
name = "jake"
if let newName = name {
let value = newName
}
數(shù)組
定義一個(gè)數(shù)組
var numbers:[Int] = [1, 1, 2]
var names:[String] = ["jake", "jim"]
訪問數(shù)組中元素
names[0]
numbers[1]
遍歷數(shù)組
- 方式1 不需要index
for name in names {
print(name)
}
- 需要index的遍歷
for(index, item) in names.enumerated(){
print("在 index=\(index) 位置上的值為\(item)")
}
合并數(shù)組
var intsA:[Int] = [1, 2, 3, 4, 5]
var intsB:[Int] = [6, 7, 8, 9, 10]
var intsC = intsA + intsB;
結(jié)果為: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
判斷數(shù)組是否為空 可以通過只讀元素isEmpty
, 返回Bool結(jié)果判斷
let b = intsA.isEmpty
字典
定義一個(gè)字典
var person:[String: String] = ["name": "jake", "age": "12", "height": "1.89"]
// 可以存放基本數(shù)據(jù)類型
var person2:[String: AnyObject] = ["name": "jake" as AnyObject, "age": 12 as AnyObject, "height": 1.79 as AnyObject];
通過指定的key訪問
person["name"]
移除鍵值對(duì)
// 移除所有鍵值對(duì)
person.removeAll()
// 移除某個(gè)key對(duì)應(yīng)的鍵值對(duì)
person2.removeValue(forKey: "name")
// 通過設(shè)置指定key對(duì)應(yīng)的value為nil來移除鍵值對(duì)
person2["name"] = nil
// 遍歷字典
var person:[String: String] = ["name": "jake", "age": "12", "height": "1.89"]
// 遍歷字典
for (key, value) in person{
print("字典key \(key)-字典value \(value)")
}
結(jié)果為:
字典key name-字典value jake
字典key age-字典value 12
字典key height-字典value 1.89
- 使用
enumerate()
方法進(jìn)行遍歷 返回字典的索引
及(key, value)
var person:[String: String] = ["name": "jake", "age": "12", "height": "1.89"]
for(index, value) in person.enumerated(){
print("字典索引index \(index)-字典value \(value)")
}
常用字典屬性
var person:[String: String] = ["name": "jake", "age": "12", "height": "1.89"]
let dictKeys = person.keys
print(dictKeys)
let dictValus = person.values
print(dictValus)
// 鍵值對(duì)個(gè)數(shù)
person.count
// 判斷字典是否為空
person.isEmpty