如何检测iOS设备的版本

时间:2015-02-25 10:57:27

标签: objective-c iphone version

以下是我的代码尝试检测低于7.9的设备的版本号。在我朋友的手机上,IOS 7.1.1仍然会转到else语句,而是转到if语句。

NSString* minimumVersionString = @"7.9";
NSComparisonResult versionComparison = [[[UIDevice currentDevice] systemVersion] compare:minimumVersionString options:NSNumericSearch];

if (versionComparison == NSOrderedSame || versionComparison == NSOrderedAscending)
{

}
else {
     [self popoverCategoryWithAlertController];
}

我会想到如果有一个IOS 7.1.2或更低版本的设备将被执行这个if语句:

if (versionComparison == NSOrderedSame || versionComparison == NSOrderedAscending)

但它不是..我使用错误的方法检查设备IOS版本

我甚至这样做但结果相同:

if ([NSProcessInfo instanceMethodForSelector:@selector(isOperatingSystemAtLeastVersion:)]) {
    if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:versions])
        [self popoverCategoryWithAlertController];
    else   {

    }
}

2 个答案:

答案 0 :(得分:1)

为什么需要检测iOS版本?因为检测是否存在检查基础版本的方法要好得多。

做一些像:

if ([self respondsToSelector:@selector(presentViewController:animated:completion:)]) {
    [self presentViewController:errorView animated:YES completion:nil];
} else {
    [self presentModalViewController:errorView animated:YES];
}

或者如果您需要:

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1) {
     // Load resources for iOS 7.1.* or earlier
} else {
    // Load resources for iOS 8 or later
}

答案 1 :(得分:0)

使用此

NSString* minimumVersionString = @"7.9";
NSComparisonResult versionComparison = [[[UIDevice currentDevice] systemVersion] compare:minimumVersionString options:NSNumericSearch];

if (versionComparison != NSOrderedAscending)
{
    //do some iOS 7.9 or greater stuff
}
else {

}