一 : 字符串的使用 :
1>字符串的定义
1.1 不可变字符串的定义
1.2 可变字符串的定义
2>获取字符串的长度
3>字符串的拼接
3.1字符串之间的拼接
3.2字符串和其他标识符之间的拼接"\(标识符)"
3.3字符串拼接过程中的格式化: string(format:"%d:%d",参数)
4>字符串的截取
4.1 将String 转成NSString 在进行截取(推荐)
4.2 直接使用String中的方法进行截取 .String.Index
二 : 数组的使用
1>数组的定义
1.1定义不可变数组 使用 let 修饰 let array = ["2","3","4"]
1.2定义可变数组 使用var 修饰 var arrayM = [String]()
2>对可变数组的操作 : 增删改查
2.1增 : arrayM.append("ml")
2.2删 :arrayM.remove(at: 0)
2.3改 :arrayM[0] ="lm"
2.4 获取 : let item =arrayM[1]
3>对数组的遍历
3.1获取数组的长度
let count =array.count
3.2 数组的遍历(i/item/index - item)
for i in 0..<count {
print (array[i])
}
for item in array {
print(item)
}
for (Index,item) in array.enumerated () {
print (index)
print(item)
}
3.4 数组的组合 : 如果两个数组中存放的是相同的元素,那么在swift中可以对两个数组进行相加,直接合并
三: 字典的使用
1>字典的定义
1.1 不可变字典,用 let 修饰 let dict : [String : Any] = ["name":"malong","age": 22,"height": 1.73]
1.2 可变字典,用var 修饰 var dictM = [String : Any]()
2>对可变字典的基本操作 : 增删改查
2.1 增 :
dictM["name"] ="ml"
dictM["age"] = 22
dictM["height"] = 1.73
2.2 删
dictM.removeValue(forKey:"height")
2.3 改
dictM["name"] ="lm"
dictM.updateValue("malong", forKey:"name")
2.4 查
dictM["age"]
3> 遍历字典
3.1 遍历所有的key
for key in dict.keys {
print(key)
}
3.2 遍历所有的values
for value in dict.values {
print(value)
}
3.3 遍历所有的key/value
for (key,value) in dict {
print(key,value)
}
4> 字典合并
var dict3 : [String:Any] = ["name":"why","age": 18]
letdict2 : [String:Any] = ["height": 1.88,"phoneNum":"+86 110"]
for(key, value)indict2{
dict3[key] = value
}
print("%@",dict3)
四 : 元祖的使用 : 对比数组和字典来说更加直观取出数据更加方便
letinfo = ("malong","123","1.23")
letname1 =info.0
letage1 =info.1
letheight1 =info.2
letinfo2 = (name :"malong", age :"123", height :"1.31")
info2.name
info2.age
info2.height
五 : 可选类型
1> 可选类型的定义
1.1 var name :<optional>String = nil
1.2 var name : String? = nil
2> 可选类型的赋值
name = "malong"
name = Optioal("malong")
3> 可选类型的取值
print(name)
4> 强制解包
print(name!)
注意:必须强制解包必须保证该值不为nil,如果为nil强制解包就会崩溃
5> 可选绑定 : (固定格式) 该语法用于可选类型,使我们使用起来可选类型更加方便
5.1 判断name是否有值,如果没有值,则不执行{}
5.2 如果name有值,那么系统会自动对可选类型进行解包,并且讲解包后的结果赋值给前面的变量
if let tempName = name {
print(tempName)
}
if let name = name {
print(name)
}
六 可选类型的应用 :只要有一个类型可能为nil,那么这个标识符的类型一定是一个可选类型
1> 将字符串转成Int类型
let m : Double = 2.44
let n = Int(m)
let str : String = "123"
let num :Int? = Int(str)
2> 根据文件名称:123.plist,获取该文件的路劲
let path : String? = Bundle.main.path(forResource:"123.plist", ofType:nil)
3> 将字符串转成NSURL ,如果字符串中有中文,那么就转化不成功返回结果nil
let url = URL(string : "http://www.baidu.com")
4> 从字典中取出元素
let dict : [String : Any] = ["name" : "malong","age" : 12]
let value = dict["nene"]
七 : 类型转换
1> 之前的as使用
let str = "www.baidu.com"
(str as NSString),substring(to:4)
2> as? as! 的用法
let dict : [NSString : Any] = ["name" : "malong" , "age" : 12]
2.1 as?的用法 : as? 转成的类型是一个可选类型,系统会自动判断tempName是否可以转成String,如果可以转成就获取字符串,如果转化不成功,返回nil
let tempName = dict["name"]
let name = tempName as? String
if let name = name {
print(name)
}
if let name = dict["name"] as? String {
print(name)
}
2.2 as! 的用法 : 通过as! 转成具体类型,注意:!如果转化不成功,则程序会直接崩溃. 建议:!如果确定能转化成功,在用as!,平时不建议使用
let tempName1 = dict["name"]
let name1 = tempName1 as! String
八 函数的使用
1> 没有参数,没有返回值的函数
func about() ->Void {
print(hahahha)
}
2> 有参数没有返回值的函数
func today1(day :String) {
print("今天星期:\(day)")
}
today1(day:"五")
3> 没有参数有返回值的函数
func attention() ->String{
return"前方高能!!"
}
let attentionMsg =attention()
4> 有参数有返回值的函数
funcjian (num1 :Int,num2 :Int) ->Int{
returnnum1 - num2
}
letresult1 =jian(num1: 39, num2: 21)
print(result1)
九 函数的其他用法
1>内部参数,外部参数
1.1 内部参数 : 在函数内部能看到标识符的名称, 该标识符就是内部参数
1.2 外部参数: 在函数外部能看到标识符的名称, 该标识符就是外部参数
默认情况下, 所哟的参数都是内部参数,也都是外部参数
修改外部参数: 在标识符钱加上外部参数名称即可
如果不希望显示外部参数,可以在标识符前加上_
func sum1 (_n :Int,_m :Int) ->Int{//在前面加_ 调用的时候就不显示参数的名称
return n + m
}
let result1 = sum1(23,33)
2>可变参数: 参数的个数是可变的
func sum1(_ nums : Int...) -> In t{
var total = 100
for i in nums {
total -= i
}
returntotal
}
sum1(30, 20,20,10,11)
3>默认参数: 可以给摸一个参数提供一个默认值
4>指针参数:inout
varm :Int= 20
varn :Int= 30
func swapNum(num1 :inout Int, num2 :inout Int) {
lettemp = num1
num1 = num2
num2 = temp
}
swapNum(num1: &m, num2: &n)
print("m:\(m) n:\(n)")