比较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"];