//1、字典:(1)、存储多个相同类型元素的容器(2)、使用键值对存储数据(3)、无序
//(1)、空字典
var dic1 = [Int:String]()
var dic2:[String:String] = [:]
//(2)、空字典赋值:
dic2 = ["name":"huangjingzheng","age":"12","gender":"男"]
var dic3:[Int:String] = [1:"sdfsdf",2:"sdfdsfsdsdf",3:"dfdgdgdgdddee"]
//(3)、使用系统推断类型创建字典:对应键和值的类型一致
var dic4 = [1:23,2:34,3:55]
var dic5 = ["name":"yuanliyin","age":"20","gender":"nv"]
var dic6 = [1:"dfsdfsd",3:"sfsdfdsfds",4:"dfsdfsd"]
var dic7 = Dictionary<Int,String>()
dic7 = [1:"sdfsdf",2:"hdgdrdfddf"]
//(4)、访问和修改:
//a、字典具有长度:
print("字典的长度事\(dic7.count)")
//b、字典是否为空:
var isEmpty = dic7.isEmpty
print(isEmpty)
//c、取值:
var a = dic7[1]//并不是第一个,是对应的键值
var dic8 = ["name":"sdfsdf","age":"87689"]
var b = dic8["name"]
//d、修改:
dic8["name"] = "jiadongliang"
print(dic8)
//e、更新数据方法:
dic8.updateValue("23", forKey: "age")
print(dic8)
if let d = dic8["nam"] {
print(d)
}else{
print("不存在key")
}
//f、删除
//最简单的删除:
dic8["name"] = nil
print(dic8)
//remove
dic7.removeValue(forKey: 1)
print(dic7)
//(5)、字典的便利
dic8 = ["dfsdf":"adfsdf","bfsfsd":"cdf","efsdf":"sdfsd"]
for (key,value) in dic8{
print(key)
print(value)
}
//字典中的key不可重复:
//var dic9 = ["a":"aa","b":"bb","a":"cc"]
//只便利key
for key in dic8 {
print(key.key)
print(key.value)
}
for keys in dic8.keys {
print(keys)
}
for values in dic8.values {
print(values)
}
//排序:
for values in dic8.values {
print(values)
}
var newaArr = dic8.keys
newaArr.sorted()
print(newaArr)
var newaArr1 = dic8.values
newaArr1.sorted()
print(newaArr1)
//2、控制流:(if 、switch、while、for in、repeat-while)
//(1)、for-in
for number in 1...10{
print(number)
}
let aa = 3
let bb = 10
var sum = 1
for _ in 1...bb {
sum *= aa
}
print(sum)
var array = [12,34,4546,67,45,344,223]
for value in array {
print(value)
}
for (key,value) in dic8{
print(key)
print(value)
}
//(2)、while:
var condition = 3;
while condition < 10 {
condition += 1
}
print(condition)
//(3)reapt-while OC(do-while)
var reaptcondition = 1
repeat{
reaptcondition += 1
}while reaptcondition < 10
print(reaptcondition)
var reaptcondition1 = 10
repeat{
reaptcondition1 += 1
}while reaptcondition1 < 10
print(reaptcondition1)
var condition1 = 10;
while condition1 < 10 {
condition1 += 1
}
print(condition1)
//(4)、作业if:写一个条件判断
var tam = 20
if tam < 30 {
print("天气很好")
}else{
print("有点热")
}
//(5)、switch 在swift中 case语句结束不需要break,程序自动结束
let string = "a"
switch string {
case "a":
print("这是a")
case "b":
print("这是b")
case "c":
print("这是c")
case "d":
print("这是d")
default:
print("没有这个字符")
}
//let string1 = "a"
//switch string1 {
//case "a":
// //case后面的语句不可以省略
//case "b":
// print("这是b")
//case "c":
// print("这是c")
//case "d":
// print("这是d")
//default:
// print("没有这个字符")
//}
//可以并列使用逗号分隔cese条件
let string2 = "a"
switch string2 {
case "a","e","f","g":
print("这是a 或者e 或者f 或者g")
case "b":
print("这是b")
case "c":
print("这是c")
case "d":
print("这是d")
default:
print("没有这个字符")
}
//可以使用区间:
let intNumber = 4
switch intNumber {
case 0:
print("这是a 或者e 或者f 或者g")
case 1...5:
print("这是在1-5之间的数")
case 6...10:
print("这是c")
case 11...20:
print("这是d")
default:
print("没有这个字符")
}
//放置元祖:使用_表示通配类型
let point = (1,2...5)
switch point {
case (0,0...2):
print("这是a 或者e 或者f 或者g")
case (1,2...5):
print("这是在1-5之间的数")
case (1,_):
print("这是c")
case (1,3...4):
print("这是d")
default:
print("没有这个字符")
}
let point1 = (1,2)
switch point1 {
case (0,1):
print("这是a 或者e 或者f 或者g")
case (1,4):
print("这是在1-5之间的数")
case (1,_):
print("这是c")
case (1,3):
print("这是d")
default:
print("没有这个字符")
}
//使用常量或者变量做通配类型:case 后面可以省略break
let point2 = (2,1)
switch point2 {
case (let x,1):
print("这是a 或者e 或者f 或者g")
case (2,let y):
print("这是在1-5之间的数")
case (1,_):
print("这是c")
case (1,3):
print("这是d")
default:
print("没有这个字符")
}
//可以使用where做条件追加:
let point3 = (2,1)
switch point3 {
case let(x,y) where x == y:
print("x和y相等")
case let(x,y) where x > y:
print("x大于y")
default:
print("不满足条件")
}
//可以使用where做条件追加:
let string5 = "a"
switch string5 {
case "a","b",
"c","d"
,"e",
"f","g",
"h","m","n":
print("字母是:abcdefgmn")
case "w","x","y","z":
print("字母是:wxyz")
default:
print("不满足条件")
}
//作业:使用switch-case完成元祖的区间判断,追加条件,至少带有三个条件选择
//6、控制转移语句:continue break fallthrough return throw
//(1)、continue 跳过本次程序执行,执行下次循环
let strContinue = "a big apple"
var newContinuestr = ""
for character in strContinue.characters {
switch character{
case "a","e","i","o","u"," ":
continue
default:
newContinuestr.append(character)
}
}
print(newContinuestr)
//(2)、break 跳出程序,执行下条语句
let sanStr = "三"
var newSanStr = ""
switch sanStr {
case "1","a":
newSanStr = "1"
case "4","b","二":
newSanStr = "2"
case "5","c"," ":
newSanStr = "3"
default:
break
}
//跳出switch 进入下条语句:
print(newSanStr)
//fallthrogh: 贯穿:
let integerNumber = 3
var desStr = "这个数是"
switch integerNumber {
case 1,2,3,4,5:
desStr += "3,并且"
fallthrough
default:
desStr += "是Int型的数据"
}
print(desStr)
//(4)、return:函数中使用的比较多,举例见函数
//6、检测API的可用性:在#available后使用,可用的平台使用逗号分割,做多个系统版本检测
if #available(iOS 10,macOS 10.12, *){
print("在ios 10和macOS 10.12可用的API")
}else{
print("使用以前版本的API")
}