আমি ভেবেছিলাম আমি এই জন্য আমি একসাথে টানা একটি ফাংশন ভাগ করব। এটি মোটেই নিখুঁত নয়। উদাহরণ এবং ফলাফল যে একবার দেখুন। তবে আপনি যদি নিজের সংস্করণ নম্বরগুলি পরীক্ষা করে দেখছেন (যা আমাকে ডাটাবেস স্থানান্তরের মতো জিনিস পরিচালনা করতে হবে) তবে এটি কিছুটা সহায়তা করতে পারে।
(এছাড়াও, পদ্ধতিটিতে লগ স্টেটমেন্টগুলি অবশ্যই মুছে ফেলুন those সেগুলি এখানে যা আছে তা আপনাকে দেখতে সহায়তা করার জন্য রয়েছে)
পরীক্ষা:
[self isVersion:@"1.0" higherThan:@"0.1"];
[self isVersion:@"1.0" higherThan:@"0.9.5"];
[self isVersion:@"1.0" higherThan:@"0.9.5.1"];
[self isVersion:@"1.0.1" higherThan:@"1.0"];
[self isVersion:@"1.0.0" higherThan:@"1.0.1"];
[self isVersion:@"1.0.0" higherThan:@"1.0.0"];
[self isVersion:@"1.0b" higherThan:@"1.0a"];
[self isVersion:@"1.0a" higherThan:@"1.0b"];
[self isVersion:@"1.0a" higherThan:@"1.0a"];
[self isVersion:@"1.0" higherThan:@"1.0RC1"];
[self isVersion:@"1.0.1" higherThan:@"1.0RC1"];
ফলাফল:
1.0 > 0.1
1.0 > 0.9.5
1.0 > 0.9.5.1
1.0.1 > 1.0
1.0.0 < 1.0.1
1.0.0 == 1.0.0
1.0b > 1.0a
1.0a < 1.0b
1.0a == 1.0a
1.0 < 1.0RC1 <-- FAILURE
1.0.1 < 1.0RC1 <-- FAILURE
খেয়াল করুন যে আলফা কাজ করে তবে আপনাকে এটি সম্পর্কে খুব সতর্কতা অবলম্বন করতে হবে। আপনি একবারে আলফা হয়ে গেলে এর পিছনে অন্য কোনও ছোটখাটো সংখ্যা পরিবর্তন করে আপনি এটি প্রসারিত করতে পারবেন না।
কোড:
- (BOOL) isVersion:(NSString *)thisVersionString higherThan:(NSString *)thatVersionString {
if ([thisVersionString compare:thatVersionString options:NSNumericSearch] == NSOrderedAscending) {
NSLog(@"%@ < %@", thisVersionString, thatVersionString);
return NO;
}
if ([thisVersionString compare:thatVersionString options:NSNumericSearch] == NSOrderedSame) {
NSLog(@"%@ == %@", thisVersionString, thatVersionString);
return NO;
}
NSLog(@"%@ > %@", thisVersionString, thatVersionString);
return YES;
}