簡體   English   中英

使用Swift測試UIApplicationOpenSettingsURLString的存在

[英]Testing for UIApplicationOpenSettingsURLString existence with Swift

在iOS 8上,Apple允許我們使用Constant UIApplicationOpenSettingsURLString從我們的應用程序轉到App Settings

UIApplication.sharedApplication().openURL(NSURL.URLWithString(UIApplicationOpenSettingsURLString))

有一個代碼可以測試iOS 7上是否存在此常量,但它使用了ObjC和pointes。 Apple在他們的代碼上做了這個: https//developer.apple.com/library/ios/samplecode/AppPrefs/Listings/RootViewController_m.html

我如何使用Swift制作這樣的東西?

在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]];
}

這與檢查Constant不同,但如果您知道包含Constant的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
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM