Я работаю над приложением для iPhone, где у меня есть список пользователей в NSMutableArray, как показано ниже.
myMutableArray: (
{
FirstName = Getsy;
LastName = marie;
Latitude = "30.237314";
Longitude = "-92.461008";
},
{
FirstName = Angel;
LastName = openza;
Latitude = "30.260329";
Longitude = "-92.450414";
},
{
FirstName = Sara;
LastName = Hetzel;
Latitude = "30.2584499";
Longitude = "-92.4135357";
}
)
Мне нужно отсортировать пользователей на основе местоположения, которое находится рядом с моим местоположением, путем вычисления широты и долготы. Я не могу добиться этого до сих пор. Может ли кто-нибудь помочь мне с предоставлением некоторых образцов?
ОБНОВЛЕНО: я пытаюсь, как показано ниже, как предложил Mr.sch. Пожалуйста, проверьте мой обновленный код. Это нормально?
NSArray *orderedUsers = [myMutableArray sortedArrayUsingComparator:^(id a,id b) {
NSArray *userA = (NSArray *)a;
NSArray *userB = (NSArray *)b;
CGFloat aLatitude = [[userA valueForKey:@"Latitude"] floatValue];
CGFloat aLongitude = [[userA valueForKey:@"Longitude"] floatValue];
CLLocation *participantALocation = [[CLLocation alloc] initWithLatitude:aLatitude longitude:aLongitude];
CGFloat bLatitude = [[userA valueForKey:@"Latitude"] floatValue];
CGFloat bLongitude = [[userA valueForKey:@"Longitude"] floatValue];
CLLocation *participantBLocation = [[CLLocation alloc] initWithLatitude:bLatitude longitude:bLongitude];
CLLocation *myLocation = [[CLLocation alloc] initWithLatitude:locationCoordinates.latitude longitude:locationCoordinates.longitude];
CLLocationDistance distanceA = [participantALocation distanceFromLocation:myLocation];
CLLocationDistance distanceB = [participantBLocation distanceFromLocation:myLocation];
if (distanceA < distanceB) {
return NSOrderedAscending;
} else if (distanceA > distanceB) {
return NSOrderedDescending;
} else {
return NSOrderedSame;
}
}];
Спасибо!
for loop
, и использовать метод: [array objectAtIndex:theIndex]; 16.02.2012