我想检查设备的iOS版本是否大于3.1.3 我尝试了以下方法:

[[UIDevice currentDevice].systemVersion floatValue]

但是不管用,我只想要一个:

if (version > 3.1.3) { }

我怎样才能做到这一点呢?


当前回答

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
        // Your code here
}

当然,其中NSFoundationVersionNumber_iOS_6_1必须更改为by适用于您要检查的iOS版本。我现在所写的内容在测试设备是否运行iOS7或之前的版本时可能会经常用到。

其他回答

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
        // Your code here
}

当然,其中NSFoundationVersionNumber_iOS_6_1必须更改为by适用于您要检查的iOS版本。我现在所写的内容在测试设备是否运行iOS7或之前的版本时可能会经常用到。

开始Xcode 9,在Objective-C中:

if (@available(iOS 11, *)) {
    // iOS 11 (or newer) ObjC code
} else {
    // iOS 10 or older code
}

开始Xcode 7,在Swift中:

if #available(iOS 11, *) {
    // iOS 11 (or newer) Swift code
} else {
    // iOS 10 or older code
}

对于版本,您可以指定MAJOR、MINOR或PATCH(参见http://semver.org/的定义)。例子:

iOS 11和iOS 11.0是相同的最小版本 iOS 10, iOS 10.3, iOS 10.3.1是不同的最小版本

您可以为这些系统中的任何一个输入值:

iOS, macOS, watchOS, tvOS

来自我的一个豆荚的真实案例:

if #available(iOS 10.0, tvOS 10.0, *) {
    // iOS 10+ and tvOS 10+ Swift code
} else {
    // iOS 9 and tvOS 9 older code
}

文档

使用nv-ios-version项目(Apache License, Version 2.0)中包含的Version类,很容易获取和比较iOS版本。下面的示例代码转储iOS版本,并检查版本是否大于或等于6.0。

// Get the system version of iOS at runtime.
NSString *versionString = [[UIDevice currentDevice] systemVersion];

// Convert the version string to a Version instance.
Version *version = [Version versionWithString:versionString];

// Dump the major, minor and micro version numbers.
NSLog(@"version = [%d, %d, %d]",
    version.major, version.minor, version.micro);

// Check whether the version is greater than or equal to 6.0.
if ([version isGreaterThanOrEqualToMajor:6 minor:0])
{
    // The iOS version is greater than or equal to 6.0.
}

// Another way to check whether iOS version is
// greater than or equal to 6.0.
if (6 <= version.major)
{
    // The iOS version is greater than or equal to 6.0.
}

项目页面:nv-ios-version TakahikoKawasaki / nv-ios-version

博客:获取并比较iOS版本在运行时与版本类 获取并比较iOS版本在运行时与版本类

在主界面轻按“设置”>常规>关于。 设备的软件版本应该出现在这个屏幕上。 检查版本号是否大于3.1.3。

试试下面的代码:

NSString *versionString = [[UIDevice currentDevice] systemVersion];