如何以编程方式获得正确的iOS版本?

时间:2015-03-30 12:58:04

标签: ios objective-c iphone xcode ipad

我想获得当前用户设备的os版本,以便在后端进行一些分析。我想尝试如下,

[[[UIDevice currentDevice] systemVersion] floatValue]; **//not returning the minor version number**

当我在拥有iOS 8.0.2的iPhone上运行测试时,这个api会返回8.000000作为结果,但我需要的是8.0.2的确切iOS版本

提前了解解决此问题的任何帮助。

5 个答案:

答案 0 :(得分:13)

在iOS 8及更高版本中,您可以使用:

[[NSProcessInfo processInfo] operatingSystemVersion]

如果您想检查特定API的可用性,那么有一种比检查操作系统版本更好的方法,如here所述。

答案 1 :(得分:7)

你可以用NSString格式得到它:

[UIDevice currentDevice].systemVersion

新编辑

PS

你改变了你的问题......现在我的答案已经没有了解...... 下次添加带有明显编辑的新行,让大家了解问题/答案的主题,  请

答案 2 :(得分:1)

I know i could have added some of my code to it but i am only able to find of ionic 2

答案 3 :(得分:0)

目标C

// define macro
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)

然后使用:

if (SYSTEM_VERSION_LESS_THAN(@"10.0")){
   //your code here 
}

答案 4 :(得分:0)

也许不是更优雅的解决方案,但它绝对能胜任,所以你可以在ObjC中尝试类似的东西:

- (NumVersion)systemVersion {
    NSArray *_separated = [[[UIDevice currentDevice] systemVersion] componentsSeparatedByString:@"."];
    NumVersion _version = { 0, 0, 0, 0 };
    if (_separated.count > 3) _version.stage = [[_separated objectAtIndex:3] integerValue];
    if (_separated.count > 2) _version.nonRelRev = [[_separated objectAtIndex:2] integerValue];
    if (_separated.count > 1) _version.minorAndBugRev = [[_separated objectAtIndex:1] integerValue];
    if (_separated.count > 0) _version.majorRev = [[_separated objectAtIndex:0] integerValue];
    return _version;
}

然后:

NumVersion version = [self systemVersion];
NSLog(@"%d, %d, %d, %d", version.majorRev, version.minorAndBugRev, version.nonRelRev, version.stage);

会打印(就我的情况而言):

11, 0, 2, 0

您可以为您的分析转换为更理想的格式。