以下是我的代码尝试检测低于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 {
}
}
答案 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 {
}