−107
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
int sortingFunctionForType2(SomeEntity *item1, SomeEntity *item2, void *context)
{
NSString *str1 = nil;
NSString *str2 = nil;
if ([[item1 version] intValue] >= 10)
{
str1 = [NSString stringWithFormat:@"9%@", [item1 version]];
}
else
{
str1 = [NSString stringWithFormat:@"%@", [item1 version]];
}
if ([[item2 version] intValue] >= 10)
{
str2 = [NSString stringWithFormat:@"9%@", [item2 version]];
}
else
{
str2 = [NSString stringWithFormat:@"%@", [item2 version]];
}
return [str1 compare:str2];
}
Пояснение. Парсится XMLка, строится объект SomeEntity, у него есть свойство NSString *version, которое, однако, всегда имеет вид @"1", @"2", ... @"20" и так далее.
То есть, вначале горе-программисту было впадлу при строительстве объекта делать setVersion: [[attributeDict objectForKey: @"version"] intValue];
Затем возникла задача - сравнить эти числовые значения. Но система упорно считает, что @"10" < @"9".
Поэтому была изобретена такая портянка.
Что этот человек в программировании забыл - сказать не могу.
Запостил:
QuickNick,
19 Мая 2012
Аффтар - как всегда тот, кого нельзя называть?
"Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live."