多个swift类的相同扩展名

时间:2015-12-22 19:03:26

标签: swift

我的appDelegate中有这个,并且想知道如何将它变成一个扩展名?

extension UIViewController {
    var appDelegate:AppDelegate {
        return UIApplication.sharedApplication().delegate as! AppDelegate
    }
}

extension Blue {
    var appDelegate:AppDelegate {
        return UIApplication.sharedApplication().delegate as! AppDelegate
    }
}

extension Green {
    var appDelegate:AppDelegate {
        return UIApplication.sharedApplication().delegate as! AppDelegate
    }
}
...

3 个答案:

答案 0 :(得分:2)

您只想让您的应用委托可用,这在大多数情况下都是明智的。我建议使用全局变量的便利性(在app appate class上面写这个):

let SharedAppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

答案 1 :(得分:2)

如果可以的话,你应该使用 @Mundi 的答案,但如果你想让AppDelegate允许有限数量的结构,那么这里是版本。

您可以制定协议并将此变量添加到符合此协议的每个人:

protocol AppDelegatable {
    var appDelegate: AppDelegate { get }
}

extension AppDelegatable {
    var appDelegate: AppDelegate {
        return UIApplication.sharedApplication().delegate as! AppDelegate
    }
}

答案 2 :(得分:1)

你总是可以这样做:

extension NSObject
{
    var appDelegate:AppDelegate {
        return UIApplication.sharedApplication().delegate as! AppDelegate
    }
}

如果您需要对大多数对象执行任何类型的扩展