每周的文档阅读
Swift 2.0之初识面向协议编程
Swift 2.0 支持协议扩展((protocol extensions):协议扩展可以使某些特定的情况下,简化协议。
因为一个类型可以遵守多个协议,所以它可以从各个协议中接收到不同的默认实现。与其它语言中所支持的多重继承不同(说的就是C++吧),协议扩展不会为遵守它的类型增加额外的状态。
所有的类,结构体和枚举都可以遵守协议,而基类只能被类所继承。
协议拥有为值类型增加默认实现的能力,而不仅仅是类
很好的用处1:
定义一个协议遵从BooleanType类型
protocol Bird: BooleanType
使用协议扩展能让我们有更简便的方法。
extension BooleanType where Self: Bird {
var boolValue: Bool {
return self.canFly
}
}
这个扩展可以让 canFly 属性来表示每个 Bird 类型的布尔值。就直接可以拿类型来当bool值来判断true ,false
Swift2.0 支持泛型
try?
try?
总是给已经在求值的结果类型又增添一层Optional
。如果一个方法正常返回的类型是Int?
,那么使用try?
调用这个方法就会返回Int??或者Optional<Optional<Int>>
文章
用模式匹配解析 URL
Generator 基本和 C++ 中的迭代方法一样。它是一个对象,next() 方法会返回被迭代序列中的下一个值,当迭代到结尾时返回 nil。
每个 SequenceType(特别是array)都有一个生成器,我们只需要对每个值调用 next() 方法就可以建立元组。如果这个数组比较短,它将用 nil 填充最后几个值:
本周遇到的问题和解决
Array的困惑
Array struct类型的泛型,是值类型的,OC中NSMutableArray
是引用类型的,而且可以存放不同的类型的变量,即默认存放的是AnyObject,当然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类型的每个枚举值都可以关联一个值,并通过switch 语句提取出来,但是不能修改这个值例如:
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){
....
}
这是一个递进的拆包语句 ,也就是说第一个let 失败接下去的将不执行
本周项目的进展和解决
登入界面的逻辑
-
viewDidLoad()
从NSUserDefaults.standardUserDefaults()
读取数据库中的保存的用户配置 -
checkForLog()
检测文本框是否已经输入完毕 -
verifyLogInform
验证登入信息
不足:添加网络制式的判断,将头像文件等读取到当前用户
设置界面逻辑
- 实现退出操作
网友评论