Тестирование существования UIApplicationOpenSettingsURLString с помощью Swift
на iOS 8 Apple дала нам возможность перейти в Настройки Приложения прямо из нашего приложения, используя постоянную UIApplicationOpenSettingsURLString
UIApplication.sharedApplication().openURL(NSURL.URLWithString(UIApplicationOpenSettingsURLString))
есть код для проверки, существует ли эта константа в iOS 7, но она использует ObjC и pointes. Apple сделала это на своем коде: https://developer.apple.com/library/ios/samplecode/AppPrefs/Listings/RootViewController_m.html
Как я могу сделать что-то подобное с помощью Swift?
3 ответов
В Swift:
switch UIDevice.currentDevice().systemVersion.compare("8.0.0", options: NSStringCompareOptions.NumericSearch) {
case .OrderedSame, .OrderedDescending:
UIApplication.sharedApplication().openURL(NSURL.URLWithString(UIApplicationOpenSettingsURLString))
case .OrderedAscending:
//Do Nothing.
}
В Objective-C:
if (&UIApplicationOpenSettingsURLString != NULL) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}
это не то же самое, что проверка константы, но если вы знаете версию API, содержащую константу (в моем случае iOS 8), есть некоторые методы:http://nshipster.com/swift-system-version-checking/
один из них:
switch UIDevice.currentDevice().systemVersion.compare("8.0.0", options: NSStringCompareOptions.NumericSearch) {
case .OrderedSame, .OrderedDescending:
println("iOS >= 8.0")
case .OrderedAscending:
println("iOS < 8.0")
}
вы можете использовать #available:
if #available(iOS 8.0, *) {
UIApplication.sharedApplication().openURL(NSURL(string: UIApplicationOpenSettingsURLString)!);
} else {
// Fallback on earlier versions
};