检查快速操作可用性

Checking for quick actions availability

我正在使用仅 IOS9 支持的主屏幕快速操作。 如果在 IOS8 中使用常量 UIApplicationLaunchOptionsShortcutItemKey 将会崩溃。 检查是否支持快速操作的正确方法是什么?

一种方法是通过 systemVersion 检查 IOS9,但我希望有更好的方法。 [[UIDevice currentDevice] systemVersion]

我认为在 Swift 的情况下,检查 API 可用性的最佳方法是 Automatic operating system API availability checking 这是 iOS9Swift2 发布的新功能

if #available(iOS 9, *) {
    // use UIApplicationLaunchOptionsShortcutItemKey
} else {
    // no available
}

#available 将检查我们是否使用 iOS 9 或更高版本,或任何其他未知平台,如 watchOS,因此 * 也在这里。

如果您的代码在函数内部,那么您可以像这样将 #availableguard 一起使用。

guard #available(iOS 9, *) else {
    return
}

标记你的方法和class以及

@available(iOS 9, *)
func useMyStackView() {
    // use UIStackView
}

@available#available 的工作方式类似,因此如果您的部署目标是 iOS7 或小于 9,则不能调用 useMyStackView()

在 objective C 中,您可以检查 class 是否存在。像

这样说
if([UIApplicationShortcutItem class]){
//Handle shortcut launch
}

对于Objc,也可以使用@available (iOS 9, *)查看OS版本

if (@available(iOS 9, *)) {
    //use UIApplicationLaunchOptionsShortcutItemKey
}