知識(shí)點(diǎn)1: let 代表變量(可以修改值),var代表常量(一但賦初始值之后不能被修改)。
比如最大登錄數(shù)需要用let?maximumNumberOfLoginAttempts = 10 來(lái)表示,
已經(jīng)登錄的次數(shù)需要用var?currentLoginAttempt = 0 來(lái)表示
知識(shí)點(diǎn)2:類(lèi)型注解
var?welcomeMessage:String。其中冒號(hào)的含義就是 是...類(lèi)型即?welcomeMessage是字符串類(lèi)型
可以同時(shí)定義多個(gè)變量的類(lèi)型,用逗號(hào)隔開(kāi),表示這幾個(gè)都是同一類(lèi)型的
?var age,count:Int 表示定義age和count 都是Int類(lèi)型的
知識(shí)點(diǎn)3:字符串插值
意思就是swift可以使用該方式將變量或者是常量插入到長(zhǎng)字符串中,使用方式為:\(常量/變量)
print("The current value of friendlyWelcome is \(friendlyWelcome) ")
// 輸出“The current value of friendlyWelcome is Bonjour!”??
知識(shí)點(diǎn)4:類(lèi)型安全和類(lèi)型推斷
類(lèi)型安全 可以理解為:如果你的代碼需要的是一個(gè)String,你就不可能會(huì)傳一個(gè)Int進(jìn)去,因?yàn)闀?huì)報(bào)錯(cuò)提示類(lèi)型不匹配。
類(lèi)型推斷 可以理解為:如果你沒(méi)有進(jìn)行類(lèi)型注解,他會(huì)根據(jù)你賦的值自動(dòng)推斷出該類(lèi)型是什么樣的類(lèi)型
知識(shí)點(diǎn)5:if
在判斷條件時(shí),if后邊的語(yǔ)句必須要是bool值?
let? ?i =1? ? ? ? ? ? ? ? ? ?
if? ?i? ?{
// 這個(gè)例子不會(huì)通過(guò)編譯,會(huì)報(bào)錯(cuò)
}
然而,下面的例子是合法的:
let? i =1
if? i ==1
{
// 這個(gè)例子會(huì)編譯成功
}
知識(shí)點(diǎn)6:元組
元組(tuples)把多個(gè)值組合成一個(gè)復(fù)合值。元組內(nèi)的值可以是任意類(lèi)型,并不要求是相同類(lèi)型
let? ?http404Error = (404,"Not Found")
你可以通過(guò)下標(biāo)訪問(wèn)元組的值,可以使用http404Error.0? 獲取到404 ,http404Error.1 獲取到Not Found
所以元組作為函數(shù)的返回值,就非常有用,比一個(gè)返回值能包含更多的信息
知識(shí)點(diǎn)6:可選類(lèi)型
C 和 Objective-C 中并沒(méi)有可選類(lèi)型這個(gè)概念
可選類(lèi)型表示有2種可能:
1. 有值,可以解析該值并訪問(wèn)該值
2.沒(méi)有值,是nil
定義一個(gè)可選類(lèi)型,如果未設(shè)置默認(rèn)值,則默認(rèn)值是nil
var serverResponseCode :Int?? = 404// serverResponseCode 包含一個(gè)可選的 Int 值404
serverResponseCode = nil? // serverResponseCode 現(xiàn)在不包含值
注意:nil 可以賦值給可選類(lèi)型,但是nil不能賦值給非可選類(lèi)型的變量或者是常量

注意:
在oc中nil?是一個(gè)指向不存在對(duì)象的指針
在swift中nil不是一個(gè)指針,它是一個(gè)確定的值,用來(lái)表示值缺失?。。?/p>
知識(shí)點(diǎn)7:與可選值搭配的if語(yǔ)句 和強(qiáng)制解析,還有可選綁定if / guard
使用可選值的三種方式:if語(yǔ)句 和強(qiáng)制解析,還有可選綁定
1.? 使用 if? 判斷不為nil 才進(jìn)行使用(代碼量大,不推薦使用)
if convertedNumber !=nil
{? ?print("convertedNumber has an integer value of\(convertedNumber!)." )? ?}
2.? 如果能確定對(duì)象肯定不為空,可以使用!進(jìn)行強(qiáng)行解包(不建議使用)
3.使用 if 可選綁定,如果有值,才使用(推薦使用)
if? ?let? constantName = someOptional?
{? statements? ?}
使用可選綁定的時(shí)候,還可以多個(gè)bool條件在一個(gè)if中,使用逗號(hào)隔開(kāi)就可以了
if? let? ?firstNumber =Int("4")? ,? ?let? ?secondNumber = Int("42") ,? firstNumber < secondNumber && secondNumber <100
{ print("\(firstNumber)<\(secondNumber)< 100")? ?}
4.使用guard 語(yǔ)句來(lái)進(jìn)行
像?if?語(yǔ)句一樣,guard?的執(zhí)行取決于一個(gè)表達(dá)式的布爾值。我們可以使用?guard?語(yǔ)句來(lái)要求條件必須為真時(shí),以執(zhí)行?guard?語(yǔ)句后的代碼。不同于?if?語(yǔ)句,一個(gè)?guard?語(yǔ)句總是有一個(gè)?else?從句,如果條件不為真則執(zhí)行?else?從句中的代碼
guard? let? location = person["location"]? else? {//條件為false 的時(shí)候執(zhí)行else的代碼
print("I hope the weather is nice near you.")? ? ?return? }? //到這里才是guard語(yǔ)句的結(jié)束
print("I hope the weather is nice in\(location).") //條件為true 的時(shí)候執(zhí)行g(shù)uard之后的的代碼
知識(shí)點(diǎn)8:錯(cuò)誤處理、斷言和先決條件 ?(待更新)