比较string格式“2.0.1”,“2.0.09”

我需要获取用户的应用程序版本号,并将其与我的服务器上的当前应用程序版本进行比较。 如果用户的应用程序版本较低,他将popup一个更新他的应用程序。 在这样做的时候,我需要将应用程序的版本与可用的版本进行比较。 在Objective-C中,如何比较格式为"2.0.1""2.0.09"的string并获得最高的string?

我还没有testing过(现在不在OS X上),所以这是在黑暗中完整的拍摄。 如何使用NSString类的compare:options:方法?

 NSString *v1 = "2.0.1"; NSString *v2 = "2.1"; NSComparisonResult *r= [v1 compare:v2 options:NSNumericSearch]; if (r == NSOrderedSame || r == NSOrderedDescending) { // do } else { // do } 

那样有用吗?

如果你的string都是“2.0.1”的forms,你可以把它们与正确的选项进行比较:

 ([localVersionString compare:currentVersionString options:NSNumericSearch] != NSOrderedAscending); 

如果localVersion不比服务器上的currentVersion大,则返回“ YES ”,否则返回“ NO ”(假设我有这个正确的方法)。

在检查安装在iDevice上的iOS本地版本时,这是通常要做的事情。

正如本文所回答的那样; 比较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"];