代碼示例運行環境為 IOS10,Swift3.0
在swift3.0下獲取類或者對象的 類型 需要分兩種情況。
類繼承于NSObject
自定義類User
class User: NSObject {
}
此時獲取類型的方法為
let user = User()
let classType1:AnyClass = User.classForCoder()
let classType2:AnyClass = User.self
let objectType1:AnyClass = user.classForCoder
let objectType2:AnyClass = type(of:user)
其中classForCoder()
和classForCoder
返回的是AnyClass,而另外兩個方法返回的是User.Type
,AnyClass可以通過user.classForCoder as! User.Type
轉換為實際的類型。
純Swift類
跟繼承自NSObject類相比,不能通過 classForCoder
來實現。
如果有任何疑問或者是文中存在技術性錯誤,請留言,我會盡快回復或者更改。