次のように適切にソートされたバージョン番号の配列をソートしようとしています。
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を使用しています。