一.字符串
- 在OC中字符串類型是NSString,在swift中字符串類型是String
- OC中字符串@"",swift中字符串""
String特點(diǎn)
- String 是一個(gè)結(jié)構(gòu)體,性能更高
- NSString 是一個(gè)oc 對(duì)象,性能略差
- String 支持直接遍歷
- swift提供了string和nsstring 之間的無(wú)縫轉(zhuǎn)換
遍歷字符串
var str = "Hello, playground"
for c in str.characters{
print(c)
}
字符串的拼接
let str3 = str1 + str2
字符串與其他標(biāo)識(shí)符的拼接
let name = "cy"
let age = 16
let height = 165
let info = "my name is \(name),my age is \(age),my height is \(height)"
字符串的格式化
let min = 30
let second = 21
let time = String(format: "%02d:%02d", arguments: [min,second])
字符串截取
let min = 30
let second = 21
let time = String(format: "%02d:%02d", arguments: [min,second])
let webAddress = "www.baidu.com"
let head = (webAddress as NSString).substring(to: 3)
let middle = (webAddress as NSString).substring(with: NSMakeRange(4, 5))
let footer = (webAddress as NSString).substring(from: 10)
二. 數(shù)組
- 數(shù)組是一串有序的由相同類型元素構(gòu)成的集合
- 數(shù)組中的集合元素是有序的,可以重復(fù)出現(xiàn)
- swift中數(shù)組類型是array, 是一個(gè)泛型集合
數(shù)組初始化
定義不可變數(shù)組
let array = ["why","yz"]
定義可變數(shù)組
var array = [String]()
//var array = Array<String>()(不常用)
可變數(shù)組的基本操作
//定義一個(gè)數(shù)組
var array = [String]()
//var array = Array<String>()(不常用)
//添加新元素
array.append("hahha")
array.append("eafe")
array.append("ewae")
//取出數(shù)組中元素
array[1]
//刪除數(shù)組某個(gè)元素
array.remove(at: 0)
//修改數(shù)組中某個(gè)元素
array[0] = "ssss"
數(shù)組的遍歷
array
//1.根據(jù)下標(biāo)值遍歷
for i in 0..<array.count {
print(array[i])
}
//2.直接遍歷數(shù)組中的元素
for item in array {
print(item)
}
//遍歷數(shù)組前兩個(gè)元素
for i in 0..<2 {
print(array[i])
}
for item in array[0..<2] {
print(item)
}
數(shù)組的合并
注:相同類型的數(shù)組才可以進(jìn)行合并,不同類型不能相加合并
let array1 = ["hha","en","heng"]
let array2 = [123,124,456,789]
array1 與array2是不能合并的, array1 可以與之前提到的元素為string類型的array合并相加
三. 字典
定義
- 定義不可變字典使用let 修飾
let dict = ["name":"cy","age":20,"height":165]
- 定義可變字典:使用var修飾
var dictM = Dictionary<String, NSObject>()
AnyObject: 一般指定類型 NSObject: 一般用于創(chuàng)建對(duì)象 所以,亦可以寫(xiě)成:
var dictM = [String,AnyObject]()
可變字典的操作
添加元素
var dictM = [String, AnyObject]()
dictM["name"] = "chenyan"
dictM["age"] = 16
dictM["height"] = 165
dictM["weight"] = 45
刪除元素
dictM.removeValueForKey("weight")
修改元素
dictM["height"] = 170
遍歷字典
for key in dictM.keys {
print(key)
}
for value in dictM.values {
print(value)
}
for (key, value ) in dictM {
print(key)
print(value)
}
- 字典不能合并,即使類型一致也不能相加合并
- 但是可以通過(guò)遍歷其中一個(gè)字典 ,把這個(gè)字典中的key 和value 添加到另一個(gè)字典中
四.元組
元組: 理解為元素的組合(一般用于作為方法的返回值)
元組基本寫(xiě)法
let info = ("cy",16,1.65)
//取值
info.0
info.1
可以給元組中的每個(gè)元素起別名
let info = (name :"cy",age : 16,height : 1.65)
//取值
info.name
info.age
info.height
//也可以這樣寫(xiě)
let (name,age,height) = ("cy",16,1.65)
//取值
name
age
height
五.可選類型
因?yàn)閟wift是強(qiáng)類型語(yǔ)言,nil 在swift中也是一個(gè)特殊的類型,所以如果我們需要有一個(gè)變量暫時(shí)不用賦值為nil 是不可以的 ,所以就推出了可選類型
- ( swift 規(guī)定 : 對(duì)象中的任何屬性在創(chuàng)建對(duì)象時(shí) ,都必須有明確的初始化值)
定義可選類型
方式一 :常規(guī)方式(不常用)
var name : Optional<String> = nil
方式二 :語(yǔ)法糖(常用)
var name : String? = nil
賦值
name = "chenyan"
取值
- 取出可選類型中的值可以對(duì)可選類型進(jìn)行強(qiáng)制解包 : 可選類型 + !
- 但是強(qiáng)制解包是非常危險(xiǎn)的操作 ,如果可選類型為nil ,這樣強(qiáng)制解包系統(tǒng)就會(huì)崩掉 ,所以要記住在強(qiáng)制解包前要先進(jìn)行判斷是否為nil
if name != nil {
print(name!)
}
這種判斷可以用到可選類型的另一個(gè)概念 : 可選綁定
if let tempName = name {
print(tempName)
}
- 判斷name是否有值 ,如果沒(méi)有值 ,不執(zhí)行操作
- 如果name有值 ,系統(tǒng)會(huì)自動(dòng)將name進(jìn)行解包 ,并且將解包后的結(jié)果 ,賦值給tempName
常用寫(xiě)法
if let name = name {
print(name)
}
六.函數(shù)
//1.沒(méi)有參數(shù)沒(méi)有返回值
func about() -> Void {
}
about()
func about1() {
}
about1()
//2.沒(méi)有參數(shù)有返回值
func read() -> String {
return "人丑就要多讀書(shū)"
}
print(read ())
//3.有參數(shù)有返回值
func callPhone(phoneNum : String) -> String{
return "打電話給 +86 " + phoneNum
}
print(callPhone("1388888888"))