我正在尝试对可能看起来像这样正确排序的版本号数组进行排序:
1.0.1
1.1.2
1.2.0
1.10.3
2.1.1
2.2.2
2.10.2
我有一个数组,我执行以下操作:
NSArray *allUpdatekeys = [allUpdatekeystmp sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
这会产生一个类似的列表:
1.0.1
1.1.2
1.10.3
1.2.0
...
所以我尝试编写一个自定义选择器,并通过查看我发现的示例得到了这么多:
- (NSComparisonResult)versionCompare:(NSString*) secondVersion {
NSArray *secondVer = [secondVersion componentsSeparatedByString:@"."];
NSString *firstVersion = [];
NSArray *firstVer = [firstVersion componentsSeparatedByString:@"."];
NSUInteger firstPri = [firstVer[0] integerValue];
NSUInteger firstSec = [firstVer[1] integerValue];
NSUInteger firstTer = [firstVer[2] integerValue];
NSUInteger secondPri = [secondVer[0] integerValue];
NSUInteger secondSec = [secondVer[1] integerValue];
NSUInteger secondTer = [secondVer[2] integerValue];
NSLog(@"In the version compare method");
NSLog(@"first %@ second %@ ", self, secondVersion);
if (firstPri < secondPri) {
return NSOrderedAscending;
}
else if (firstPri secondPri) {
return NSOrderedDescending;
} else {
if (firstSec < secondSec) {
return NSOrderedAscending;
}
else if (firstSec secondSec) {
return NSOrderedDescending;
}
else {
if (firstTer < secondTer) {
return NSOrderedAscending;
}
else if (firstTer secondTer) {
return NSOrderedDescending;
}
else {
return NSOrderedSame;
}
}
} }
我的问题:引用第一个版本的方法是什么?我需要本质上是数组中的第一个字符串。我一直在绞尽脑汁来理解这一点,但是我发现的所有示例也都不起作用。如果有帮助或重要,我在 10.8 上使用 Xcode 4.4。