2015年12月4日,完成了第四課"More Swift and Foundation Frameworks"的學習
這一課無代碼演示,主要講解了一些Swift的基本語法知識,好在之前已經打下了基礎,沒有在這一課的學習中較為順利,但關于初始化器和懶加載以及will set,did set.方面的知識還要繼續進行補充
本課的主要知識點如下
2.png
- 可選類型其實就是個枚舉
enum Optional<T> { ///T為關聯值得類型
case None
case Some(T)
}
let x: String? = nil 相當于 let x = Optional<String>.None
let x: String? = "hello" 相當于 let x = Optional<String>.Some("hello")
- 解包"!"就相當于一個Switch
switch x {
case some(let value):y = value
case None: //raise an exception
}//在None的情況下就會拋出異常
- 遍歷字典
for (ket , value) in xxx {
print("\(key) = \(value)")
}
NSObject是OC中所有類的基類,swift中并沒有一個這樣的基類,但swift類也可以集成字NSObject
NSNumber是一個裝數字的類,swift不會用到很多,因為swift是強類型語言
NSDate 儲存日期的類
NSDate 比特包,里面是無類型的數據
swift中的數據結構
class,struct,enum是swift數據結構中的三個基礎塊
相同點:1.語法聲明上很像 2.都有屬性和函數 3.都可以有初始化構造器
不同點:1.class是三種中僅有繼承性質的 2.內省和轉換(Introspection and casting)也是class獨有的 3.class是引用類型. struct和enum是值類型AnyObject主要用于兼容現有OC API和iOS代碼,其是指向一個未知類的指針
我們會在哪里用到它?
var destinationViewController : AnyObject
var toolbarItems: [AnyObject]
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject)
func addConstraints(constranits: [AnyObject])
func appendDigit(sender: AnyObject)
class func buttonWithType(buttonType: UIButton) -> AnyObject
如何進行轉換?
利用as強制轉換
var destinationViewController : AnyObject
let calcVC = destinationViewController as CalculatorViewController
利用as?在轉換前進行判斷
if let calcVC = destinationViewController as? CalculatorViewController {...}
[AnyObject]數組的轉換
var toolbarItems: [AnyObject]
for item in toolbarItems {
if let toolbarItems = item as? UIBarButtonItem {
}
}
...or...
for toolbarItem in toolbarItems as [UIBarButtonItem] {}//直接將整個[AnyObject]數組轉換成了[UIBarButtonItem]