[英]swift check an object's property existence
我有以下UINib擴展方法,我想知道是否可以為未存檔視圖設置委托
public class func decodeView<T:UIView>(nibName name:String,className classType:T.Type,delegate:AnyObject) -> T {
let nib = UINib(nibName: name)
let topLevelObjects = nib.instantiateWithOwner(nil, options: nil)
let view = topLevelObjects[0] as T
view.setTranslatesAutoresizingMaskIntoConstraints(false)
//check if view.delegate exists then view.delegate = delegate
return view
}
如果您要問Swift是否支持反射TL; DR:您需要從NSObject
。 否則您將獲得有限的信息。
在這個問題中, Swift支持反射嗎? 您將獲得有關您的可能性的更詳細的討論。
清除此部分后,可以在此SO答案中找到有關如何獲取屬性列表的示例。
盡管一種快速且骯臟的方法可能只是嘗試訪問該屬性(使用KVC)並在失敗時捕獲異常。 Swift 不支持Try / Catch / Finally構造,但是這種不錯的技巧允許您編寫如下代碼:
SwiftTryCatch.try({
// try something
}, catch: { (error) in
println("\(error.description)")
}, finally: {
// close resources
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.