我需要获取用户的应用版本号,并将其与我服务器上的当前应用版本进行比较。如果用户的应用程序版本较低,那么他将弹出一个更新他的应用程序。在执行此操作时,我需要将应用程序的版本与可用的版本进行比较。如何在Objective-C中比较"2.0.1"
和"2.0.09"
格式的字符串并获得最高的字符串?
答案 0 :(得分:6)
如何使用NSString类的compare:options:
方法?
NSString *v1 = @"2.0.1";
NSString *v2 = @"2.1";
NSComparisonResult result = [v1 compare:v2 options:NSNumericSearch];
if (result == NSOrderedSame || result == NSOrderedDescending) {
// do
} else {
// do
}
答案 1 :(得分:4)
如果您的字符串都是“2.0.1”等格式,您可以将它们与正确的选项进行比较:
([localVersionString compare:currentVersionString
options:NSNumericSearch] != NSOrderedAscending);
如果localVersion不比服务器上的currentVersion旧,则返回“YES
”,否则返回“NO
”(假设我有正确的方法)。
在检查iDevice上安装的iOS的本地版本时,这是常见的事情。
答案 2 :(得分:3)
正如这篇文章所述; Compare version numbers in Objective-C
查看我的NSString类别,该类别在github上实现简单的版本检查; https://github.com/stijnster/NSString-compareToVersion
[@"1.2.2.4" compareToVersion:@"1.2.2.5"];
这将返回 NSComparisonResult ,这比使用更准确;
[@"1.2.2" compare:@"1.2.2.5" options:NSNumericSearch]
还增加了助手;
[@"1.2.2.4" isOlderThanVersion:@"1.2.2.5"];
[@"1.2.2.4" isNewerThanVersion:@"1.2.2.5"];
[@"1.2.2.4" isEqualToVersion:@"1.2.2.5"];
[@"1.2.2.4" isEqualOrOlderThanVersion:@"1.2.2.5"];
[@"1.2.2.4" isEqualOrNewerThanVersion:@"1.2.2.5"];