我当前的项目支持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)