swift中有一个不错的@available属性,可以在编译时测试可用性。
例如。 HKQuantityTypeIdentifierAppleExerciseTime标识符仅自iOS 9.3起可用,
因此,如果要使用它,我们需要检查可用性,如下所示:

@available(iOS 9.3, *)
public static let supportedTypes = [
    HKQuantityTypeIdentifierActiveEnergyBurned,
    HKQuantityTypeIdentifierAppleExerciseTime
]

但是是否可以添加标识符不可用的情况?
在iOS
// iOS < 9.3 case:
public static let supportedTypes = [
    HKQuantityTypeIdentifierActiveEnergyBurned
]

最佳答案

您可以声明变量并使用#available对其进行初始化:

public static let supportedTypes: [String] = {
    guard #available (iOS 9.3, *) else {
        return [ HKQuantityTypeIdentifierActiveEnergyBurned ]
    }

   return [
       HKQuantityTypeIdentifierActiveEnergyBurned,
       HKQuantityTypeIdentifierAppleExerciseTime
   ]
}()

本质上,您试图根据条件声明具有相同名称和不同默认值的两个变量之一。我认为,一次声明一个变量,然后根据相同条件分配其默认值会更直接。基本上,类也一样。

关于ios - Swift编译时可用性:不可用的情况,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37415225/

10-16 07:40