每周的文檔閱讀
Swift 2.0之初識(shí)面向協(xié)議編程
Swift 2.0 支持協(xié)議擴(kuò)展((protocol extensions):協(xié)議擴(kuò)展可以使某些特定的情況下句各,簡化協(xié)議。
因?yàn)橐粋€(gè)類型可以遵守多個(gè)協(xié)議扭粱,所以它可以從各個(gè)協(xié)議中接收到不同的默認(rèn)實(shí)現(xiàn)。與其它語言中所支持的多重繼承不同(說的就是C++吧)走哺,協(xié)議擴(kuò)展不會(huì)為遵守它的類型增加額外的狀態(tài)揍拆。
所有的類,結(jié)構(gòu)體和枚舉都可以遵守協(xié)議锦亦,而基類只能被類所繼承舶替。
協(xié)議擁有為值類型增加默認(rèn)實(shí)現(xiàn)的能力,而不僅僅是類
很好的用處1:
定義一個(gè)協(xié)議遵從BooleanType類型
protocol Bird: BooleanType
使用協(xié)議擴(kuò)展能讓我們有更簡便的方法杠园。
extension BooleanType where Self: Bird {
var boolValue: Bool {
return self.canFly
}
}
這個(gè)擴(kuò)展可以讓 canFly 屬性來表示每個(gè) Bird 類型的布爾值顾瞪。就直接可以拿類型來當(dāng)bool值來判斷true ,false
Swift2.0 支持泛型
try?
try?
總是給已經(jīng)在求值的結(jié)果類型又增添一層Optional
。如果一個(gè)方法正常返回的類型是Int?
陈醒,那么使用try?
調(diào)用這個(gè)方法就會(huì)返回Int??或者Optional<Optional<Int>>
文章
用模式匹配解析 URL
Generator 基本和 C++ 中的迭代方法一樣惕橙。它是一個(gè)對(duì)象,next() 方法會(huì)返回被迭代序列中的下一個(gè)值钉跷,當(dāng)?shù)浇Y(jié)尾時(shí)返回 nil弥鹦。
每個(gè) SequenceType(特別是array)都有一個(gè)生成器,我們只需要對(duì)每個(gè)值調(diào)用 next() 方法就可以建立元組爷辙。如果這個(gè)數(shù)組比較短惶凝,它將用 nil 填充最后幾個(gè)值:
本周遇到的問題和解決
Array的困惑
Array struct類型的泛型,是值類型的犬钢,OC中NSMutableArray
是引用類型的,而且可以存放不同的類型的變量思灰,即默認(rèn)存放的是AnyObject玷犹,當(dāng)然Array也可以存放任意類型如
var array = Array<AnyObject>()
array.append(12)
array.append(13)
array.append("nihao")
for a in array where a is String {
//output nihao
print(a)
}
Enum的困惑
Enum類型的每個(gè)枚舉值都可以關(guān)聯(lián)一個(gè)值,并通過switch 語句提取出來洒疚,但是不能修改這個(gè)值例如:
enum ServerResponse{
case Result(String, String)
case Error(String)
}
let success = ServerResponse.Result("6:00 am", "8:09 pm")
let failure = ServerResponse.Error("Out of cheese.")
switch success {
case let .Result(sunrise,sunset):
let serverResponse = "Sunrise is at \(sunrise) and sunset is at \(sunset)."
case let .Error(error):
let serverResponse = "Failure... \(error)"
}
形如:
if let str = String? {
if let url = NSURL(str){
....
}
}
可以改寫成:
if let str = String?歹颓,let url = NSURL(str){
....
}
這是一個(gè)遞進(jìn)的拆包語句 ,也就是說第一個(gè)let 失敗接下去的將不執(zhí)行
本周項(xiàng)目的進(jìn)展和解決
登入界面的邏輯
-
viewDidLoad()
從NSUserDefaults.standardUserDefaults()
讀取數(shù)據(jù)庫中的保存的用戶配置 -
checkForLog()
檢測文本框是否已經(jīng)輸入完畢 -
verifyLogInform
驗(yàn)證登入信息
不足:添加網(wǎng)絡(luò)制式的判斷油湖,將頭像文件等讀取到當(dāng)前用戶
設(shè)置界面邏輯
- 實(shí)現(xiàn)退出操作