如何对类变量进行可用性检查

Bea*_*lle 6 ios swift

我当前的项目支持iOS 7+,在我的一个视图控制器中,我正在尝试使用UIAlertView和UIAlertController.

我有#available条件在我的方法中工作,但我不知道如何包装变量.

当我有:

var alertController: UIAlertController!
var alertView: UIAlertView!
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息,告诉我UIAlertController仅在iOS 8+中可用,并且通过"将@available添加到封闭类中"选项"Fix It".但是我认为这标志着整个班级,这不是我想要的.

Dan*_*sko 20

我刚刚遇到这个问题而且我也很难找到解决方案,所以最终使变量变得懒惰并且默认为nil,同时添加了可用性注释

对于您的实现,如下所示:

@available(iOS 8.0, *)
lazy var alertController: UIAlertController? = { return nil }()
Run Code Online (Sandbox Code Playgroud)

然后,每当您尝试访问该属性时,编译器将确保在可用性检查中对其进行保护,以便您始终具有:

if #available(iOS 8.0, *) {
    self.alertController = ...
} else 
    self.alertView = ...
}
Run Code Online (Sandbox Code Playgroud)