快速检查对象的属性是否存在

时间:2015-04-06 10:12:08

标签: ios iphone xcode swift

我有以下UINib扩展方法,我想知道我是否可以为unarchived视图设置委托

    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
}

1 个答案:

答案 0 :(得分:2)

如果你问Swift是否支持反射,TL; DR:你需要从NSObject继承。否则你得到有限的信息。

this question, Does Swift support reflection?中,您可以更详细地讨论您的可能性。

清除此部分后,可在此SO Answer

中找到有关如何获取属性列表的示例

虽然快速&amp;脏的方式可能只是尝试访问属性(使用KVC)并在失败时捕获异常。 Swift 支持Try / Catch / Finally构造,但是这个nice hack允许你编写如下代码:

SwiftTryCatch.try({
         // try something
     }, catch: { (error) in
         println("\(error.description)")
     }, finally: {
         // close resources
})