1.邏輯分支
- 分支:if/switch/三目運(yùn)算符
- if
- if后面的()可以省略
- swift中必須有明確的真假
- Bool兩個取值:false/true
- 沒有非零即真,也沒有非空即真
let a = 20
if a >0{
}else{
}
let score = 88
if score < 0 || score >100{
print("不合理")
}else if score <60{
print("不及格")
}else{
print("優(yōu)秀")
}
- 三目運(yùn)算符
- 使用方法和oc是一致的
let m = 30
let n = 20
let result : Int = m > n ? m : n
-
guard的使用- swift2.0新增語法
- 和if語句非常相似,是為了提高程序的可讀性
- guard語句必須帶有else語句
- 當(dāng)條件表達(dá)式為true的時候,跳過else語句,執(zhí)行語句組內(nèi)容
- 當(dāng)條件表達(dá)式為false的時候,執(zhí)行else語句中的內(nèi)容
- 跳轉(zhuǎn)語句一般是break/return/continue/throw
- return :結(jié)束執(zhí)行,一般用在方法里
- break: 跳出循環(huán)
- continue:跳出本次循環(huán),進(jìn)入下一個循環(huán)
- throw:拋出異常
- guard寫在函數(shù)里
//guard格式:
guard 條件表達(dá)式 else{
//條件語句
break
}
//---------------
let age = 20
//定義函數(shù)
func online(age :Int) -> Void {
//大于18歲,帶了身份證,帶了錢
guard age >=18 else{
print("回家去")
return
}
guard 帶了身份證 else{
print ("回家取身份證")
return
}
guard 帶了錢 else{
print("回家拿錢")
return
}
//執(zhí)行語句
print(“留下來上網(wǎng)”)
}
//調(diào)用函數(shù)
online(20)
- switch
- 蘋果對switch進(jìn)行了大大的增強(qiáng),使其擁有了其他語言中沒有的特性
- switch的簡單使用
- 基本用法和OC用法一致
- 不同之處:
- switch后面可以不跟()
- case后可以不跟break(默認(rèn)會有break),不會產(chǎn)生case穿透
- 如果希望產(chǎn)生case穿透,需要在語句結(jié)束時候,加上另一個關(guān)鍵字
fallthrough - 在swift中switch的
case后面可以跟上多個條件,并且多個條件以逗號(,)分隔
//基本用法:sex 0:男 1 :女
let sex = 0
switch sex {
case 0 :
print("男")
case 1 :
print("女")
}
//-------------------
switch sex {
case 0 ,1 :
print("正常人")
default:
print("非正常人")
}
- swift的特殊用法
- 判斷浮點(diǎn)型
- 判斷字符串類型
- 支持區(qū)間判斷
- 半開半閉區(qū)間 0..<10 :0~9 不包含10
- 閉區(qū)間 0...10 :0~10 包含10
//判斷浮點(diǎn)型
let m = 3.14
switch m{
case 3.14:
print("m是一個π")
default:
print("m非π")
}
//判斷字符串類型
let a = 30
let b = 20
let opration = "*"
var result = 0
switch opration{
case "+":
result = a + b
case "-":
result = a-b
case "*":
result = a *b
case "/"
result = a/b
default :
print("非法操作")
}
//支持區(qū)間判斷
let score = 88
switch score {
case 0..60:
print("不及格")
case 60..80:
print(“及格”)
case 80..90:
print("良好")
case 90...100:
print("優(yōu)秀")
default:
print("不合理分?jǐn)?shù)")
}
- 總結(jié)
- swift初體驗(yàn)
- 導(dǎo)入框架 import 框架名稱
- 定義標(biāo)識符
- 定義標(biāo)識符必須指定常量和變量
- 如果一行當(dāng)中只有一條語句,那么語句結(jié)束,分號可以省略
- 打印內(nèi)容 print("")
- 常量和變量的使用
- var :修飾變量
- let :修飾常量
- 使用注意:
- 優(yōu)先使用常量,防止被修改
- 常量的本質(zhì):指向的內(nèi)存地址不可以修改,但是可以通過內(nèi)存地址找到對應(yīng)的對象,之后修改對象內(nèi)部的屬性
- 數(shù)據(jù)類型
- 整型和浮點(diǎn)型
- 類型推導(dǎo):
- 如果在定義一個標(biāo)識符時,如果有直接給該標(biāo)識符賦值,那么會根據(jù)賦值的類型推導(dǎo)前面標(biāo)識的類型
- 那么這個時候標(biāo)識符的類型可以省略
- option+鼠標(biāo)左鍵
- 基本運(yùn)算
- swift中沒有隱式類型轉(zhuǎn)化
- 所有必須保證類型一致才能進(jìn)行運(yùn)算
- 邏輯分支
- if分支
- if后面()可以省略
- 沒有非零即真,必須有明確真假
- Bool:true/false
- 三目運(yùn)算符
- guard
- guard
- 方法return
- 循環(huán)break/continue
- 拋出異常throw
- 條件為true執(zhí)行語句塊,條件為false執(zhí)行else{}
- guard
- switch
- switch后面的()可以省略
- case結(jié)束后可以不加break
- 希望case穿透:fallthrough
- 特殊用法
- 判斷浮點(diǎn)型
- 判斷字符串
- 判斷區(qū)間類型
- 半開半閉區(qū)間 0..<10
- 閉區(qū)間 0...10
- if分支
2.循環(huán)
- for
- 如果一個標(biāo)識符不需要使用,那么可以通過_來代替
- 建議區(qū)間遍歷
//區(qū)間遍歷
for i in 0..<10 {
print(i)
}
for _ in 0...9 {
print("hello world")
}
- while
- while后面的()可以省略
- 沒有非零即真
//i最后一次打印是打印的1
var i = 10
while i >0 {
print(i)
i -= 1
}
- do while
- 區(qū)別:不再使用do while ——>
repeat while
- 區(qū)別:不再使用do while ——>
//m最后一次打印是打印9
var m = 0
repeat {
print(m)
m += 1
}while m < 10
3.字符串的使用
- String
- string 是一個結(jié)構(gòu)體,性能更高
- NSString是一個OC對象,性能略差
- String支持直接遍歷
- Swift提供了String 和NString之間的無縫轉(zhuǎn)換
- 字符的定義
- 定義不可變字符串 :let修飾的字符串就是不可變的
- 定義可變字符串: var修飾的字符串就是可變的
- 如何遍歷字符串中所有字符
for c in str.characters{
print(c)
}
- 獲取字符串的長度
let length = str.characters.count
- 字符串的拼接
- 字符串之間的拼接
- 字符串和其他標(biāo)識符之間的拼接
- 在拼接過程中的格式化
//字符串之間的拼接
let str1 ="殷鳴"
let str2 = "李依隆"
let resultStr = str1 + str2
//字符串和其他標(biāo)識符之間的拼接
let name = "ym"
let height = 1.60
let age =28
let infoStr = "my name is \(name) ,age is \(age) ,height is \(height) "
print(infoStr)
//在拼接過程中格式化:QQ音樂分鐘秒鐘拼接
let min = 2
let second = 3
let timeStr = Sting(format:"%02d:%02d",arguments:[min,second])
- 字符串的截取
- 將string類型轉(zhuǎn)成NSString類型再進(jìn)行截取
- (urlString as NSString) ——>NSString
- 蘋果原生方式進(jìn)行截取
- 將string類型轉(zhuǎn)成NSString類型再進(jìn)行截取
let urlString = "www.520it.com"
//方式1:將string類型轉(zhuǎn)成NSString類型再進(jìn)行截取
let header = (urlString as NSString ).substringToIndex(3)
let footer = (urlString as NSString).substringFromIndex(10)
let range = NSMakeRange(4,5)
let middle = (urlString as NSString).substringWithRange(range)
//方式2:swift原生方式進(jìn)行截取
let headerIndex = urlString.startIndex.advanceBy(3)
let header = urlString.substringToIndex(headerIndex)
let footerIndex = urlString.endIndex.advancedBy(-3)
let footer = urlString.substringFromIndex(footerIndex)
let range = Range(start:headerIndex.advancedBy(1),end:footerIndex.advancedBy(-1))
//上面range方法過期了 ,蘋果建議寫成區(qū)間形式
let range = headerIndex.advancedBy(1)..<footerIndex.advancedBy(-1)
let middle = urlString.substringWithRange(range)
4.數(shù)組
數(shù)組:是一串有序的由相同類型元素構(gòu)成的集合
數(shù)組中的集合元素是有序的,可以重復(fù)出現(xiàn)
swift數(shù)組類型是Array,是一個泛型集合
-
如何定義數(shù)組
- 定義不可變數(shù)組,使用let修飾
- let array : Array<String> = ["why","yz","lmj","lnj"]
- 如果直接初始化的話,可以省略: Array<String>,讓其直接類型推導(dǎo)
-
let array :[String]= ["why","yz","lmj","lnj"] - let array = ["why","yz","lmj","lnj"]
- 定義可變數(shù)組,使用var修飾
- 數(shù)組是泛型集合,必須明確指定該數(shù)組之后存放的元素
- var arrayM = Array<String>()
- 簡便寫法:
var arrayM = [String]() - arrayM.append("123")
- 定義不可變數(shù)組,使用let修飾
-
對可變數(shù)組的基本操作
- 增刪改查——>數(shù)據(jù)庫
- 添加元素
- arrayM.append("lmj")
- 刪除元素
- removeAtIndex()
- removeAll
- 修改元素
- arrayM[0] = "Why"
- arrayM
- 根據(jù)下標(biāo)獲取元素
- let item = arrayM[0]
-
遍歷數(shù)組中所有的元素(三種方式)
- for i in 0..<array.count{
print(array[i]獲取下標(biāo)值)
} - for name in array {
print("類型推導(dǎo)出name的類型,只能獲取元素,不能獲取下標(biāo)值")
} 可以獲取到下標(biāo)值和元素- for(index ,name) in array .enumerate(){
print(index)
print(name)
}
- for i in 0..<array.count{
-
數(shù)組的合并
- 相同類型的數(shù)組可以相加進(jìn)行合并
- let array1 = ["why","yz"]
- let array2 = ["lmj","lnj"]
- 合并:let resultArray = array1 + array2
- 類型不一樣的數(shù)組,不可以進(jìn)行相加合并