Похоже, вы анализируете JSON. Во-первых, скажите, кто бы ни создал эти данные, JSON поддерживает числа. Lat, long и distance должны быть числами, а не строками. И кто использует один ключ с заглавной буквы L и один ключ с заглавной буквы l? Разве эти люди не могут использовать свои клавиатуры? То есть , поэтому напрашивается на неприятности, когда кто-то будет использовать неправильное правописание и часами искать ошибку.
NSMutableArray* shortDistance = [NSMutableArray array];
NSMutableArray* longDistance = [NSMutableArray array];
for (NSDictionary* dict in myArray)
{
if (dict [@"distance"].doubleValue < 500.0)
[shortDistance addObject:dict];
else
[longDistance addObject:dict];
}
Никогда не используйте floatValue, если у вас нет веских причин, по которым вы можете объяснить и защитить, почему вы используете floatValue, а не doubleValue.
Если есть вероятность того, что ваши данные имеют нулевые значения для расстояния, вам нужно проверить это, иначе ваша программа потерпит крах.
Недостаточно очков для добавления комментариев:
Этот макрос DOUBLE_OBJ просто ужасен. Чтобы получить NSNumber со значением, напишите, например,
@100 // Same as [NSNumber numberWithInt:100]
@12.34 // Same as [NSNumber numberWithDouble:12.34]
double x = ...; double y = ...; @(x + y) // Same as [NSNumber numberWithDouble:x + y]
Это часть языка Objective-C. И ты пишешь
NSDictionary *location1 = { @"distance": @16.107459108715 };
NSDictionary *location2 = { @"distance": @2005.6281723630008 };
NSDictionary *location3 = { @"distance": @250 };
NSDictionary *location4 = { @"distance": @750 };
NSArray *locations = @[location1, location2, location3, location4];