比较字符串格式为“2.0.1”,“2.0.09”

时间:2011-08-10 00:33:27

标签: objective-c ios cocoa-touch string-comparison

我需要获取用户的应用版本号,并将其与我服务器上的当前应用版本进行比较。如果用户的应用程序版本较低,那么他将弹出一个更新他的应用程序。在执行此操作时,我需要将应用程序的版本与可用的版本进行比较。如何在Objective-C中比较"2.0.1""2.0.09"格式的字符串并获得最高的字符串?

3 个答案:

答案 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"];