gpt4 book ai didi

ios - 扩展属性(如果不可用)

转载 作者:搜寻专家 更新时间:2023-11-01 07:29:33 29 4
gpt4 key购买 nike

在 Swift 2 中,Apple 引入了 API 可用性检查,它允许人们仅在指定版本或更高版本上执行某些代码,如下所示:

if #available(iOS 9, *) {
// use UIStackView
} else {
// use fallback
}

例如,iOS 9.0 引入了 localizedUppercaseString 属性:

/// An uppercase version of the string that is produced using the current
/// locale.
public var localizedUppercaseString: String { get }

我想要的是创建此属性的精确副本,该副本仅适用于低于 9.0 的版本,因此我不必在需要时检查 if#available(iOS 9, *)使用此(或任何其他)属性/方法。

我能得到的最好结果如下:

extension String {

@available(iOS 8.0, *)
var localizedUppercaseString: String {

return uppercaseStringWithLocale(NSLocale.currentLocale())
}
}

有了这个,无论 iOS 版本是 8.0 还是 9.0,我都可以调用 localizedUppercaseString。问题在于此扩展在使用 iOS 9.0 执行时会覆盖“原始”属性。

最佳答案

extension String {

var myLocalizedUppercaseString: String {
if #available(iOS 9, *) {
return localizedUppercaseString
} else {
return uppercaseStringWithLocale(NSLocale.currentLocale())
}
}
}

现在您只需使用 myLocalizedUppercaseString 属性即可。

关于ios - 扩展属性(如果不可用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33505389/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com