2019-01-11 Swift中字典的创建及使用

//: Playground - noun: a place where people can play


import UIKit

//字典也叫map 映射

//声明个空的字典

var Dict0 = Dictionary()

Dict0.isEmpty //true


//可以直接给字典添加一个key和一个value

Dict0["笑"] = "smile"

//??运算符(类似三目运算符) 意思是当用这个键取到的值是nil的时候 可以付给其一个自己定义的值 即下面的"nothing" 只能用于optional形式的数据

print(Dict0["笑"] ?? "nothing")


//其中key是hashable的即哈希函数保存 所以不可通过value逆推key

let Dict = ["苹果":"apple","桃子":"peach","菠萝":"pineapple"]

//以下两种声明方法

let emptyDict1: [String : String] = [:]

let emptyDict2: Dictionary< String , String> = [:]


//打印可以看出 取出来的值是optional可选型 因为取出来的value可能是空 而且可能key值也不存在呢

for key in Dict.keys{

//系统不知道这个取出来的optional类型的值是空还是什么 所以会报debug警告防止其值为nil 可见swift是十分anquan

//    print("\(key) : \(Dict[key]))")

    //可以用下面两种方法消除警告 都是为了防止其值为nil

    print("\(key) : \(String(describing: Dict[key])))")

    print("\(key) : \(Dict[key] ?? "nothing"))")

}


//字典的安全取值 同样适用于其他optional变量 这里如果取出来的值是nil 那就不会执行{}代码块

if let value = Dict["苹果"]{

   print(value)

}


for value in Dict.values{

    print(value)

}


let Dict1 = ["苹果":"apple","桃子":"peach","菠萝":"pineapple"]

let Dict2 = ["苹果":"apple","桃子":"peach","菠萝":"pineapple"]

Dict1==Dict2


//注意dictionary是随机存储的 所以打印出来与其开始书写程序不同

for item in Dict {

    print(item)

}


//下面是增删查改操作

var user : [NSString:NSString] = ["username":"Daniel" , "BirthDay":"2.11" , "habit":"play guitar"]

//增加

user["Sex"]="male"

//调用update方法如果没有找到该键 会自动增加一个键

user.updateValue("leftHand", forKey: "girlfriend")

let oldgirlfriend = user["girlfriend"]

user.updateValue("rightHand", forKey: "girfriend")

//注意swift2.0 中if-let-where 语句简化成 if-let-, 了

if let newgirlfriend = user["girfriend"], oldgirlfriend != newgirlfriend  {

    print("Daniel has change a girlfriend")

}


//改

user["habit"]="code"

user.updateValue("play football", forKey: "habit")


//删除

user["habit"]=nil

user

user.removeValue(forKey: "girlfriend")

user

user.removeAll()

你可能感兴趣的:(2019-01-11 Swift中字典的创建及使用)