我想按最接近用户的距离对地方的表格进行排序。我有三个方法(myLocation,clubLocation和enumerate)。 lat和long都保存在plist上(objectatIndex 4和5分别代表下面的代码)。我已经在枚举方法中创建了两个数组,一个用于lat,另一个用于long,但是我对如何将所有内容连接在一起有一个心理障碍。我假设枚举将返回一个数组(而不是void,这只是一个占位符)。它如何一次返回两个数组?我是否一次列举lat和一次?请帮忙。
我已经更新了两个方法,一个用于Lat,一个用于Long,如何返回距离及其相关对象?例如,一个只是距离的数组对我没有好处,因为我需要知道哪个距离与哪个位置相关联?
-(NSArray *)distanceFromLat
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"Data3" ofType:@"plist"];
NSMutableDictionary *tempDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
NSMutableArray *latitudeArray = [[NSMutableArray alloc] init];
latitudeArray = [[tempDictionary objectForKey:@"Subtree"]objectAtIndex:4];
NSEnumerator *enumLat = [latitudeArray objectEnumerator];
id object;
while ((object = [enumLat nextObject])) {
[myLocation distanceFromLocation:clubLocation];
}
}
-(NSArray *)distanceFromLong
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"Data3" ofType:@"plist"];
NSMutableDictionary *tempDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
NSMutableArray *longitudeArray = [[NSMutableArray alloc] init];
longitudeArray = [[tempDictionary objectForKey:@"Subtree"]objectAtIndex:5];
NSEnumerator *enumLong = [longitudeArray objectEnumerator];
id object;
while ((object = [enumLong nextObject])) {
[myLocation distanceFromLocation:clubLocation];
}
}
-(CLLocation *)clubLocation
{
NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Data3" ofType:@"plist"]];
NSArray *array = [dictionary objectForKey:@"Subtree"];
NSNumber *latitude = [NSString stringWithFormat:@"%@",[array objectAtIndex:4]];
NSNumber *longitude = [NSString stringWithFormat:@"%@",[array objectAtIndex:5]];
double clubLatitude = [latitude doubleValue];
double clubLongitude = [longitude doubleValue];
clubLocation = [[CLLocation alloc]initWithLatitude:clubLatitude longitude:clubLongitude];
return clubLocation;
}
-(CLLocation *)myLocation
{
CLLocation *location = [locationManager location];
CLLocationCoordinate2D coordinate = [location coordinate];
NSNumber *myLatitude = [NSNumber numberWithDouble:coordinate.latitude];
NSNumber *myLongitude = [NSNumber numberWithDouble:coordinate.longitude];
double myLatitudeD = [myLatitude doubleValue];
double myLongitudeD = [myLongitude doubleValue];
myLocation = [[CLLocation alloc]initWithLatitude:myLatitudeD longitude:myLongitudeD];
return myLocation;
}
答案 0 :(得分:0)
至少可以通过三种简单的方式返回超过1个值
使用自定义结构(struct Pair {id first; id second;})
使用nsarray来保存两个对象
使用指针变量作为参数(enumerationWithFirst:(NSArray * )第一秒:(NSArray *)second
使用Objective-C ++会增加一些选项,但这些选项应该可以。
顺便说一句,使用两个“枚举器”方法更有意义。您实际上是从简单的数据结构中返回属性。
哦,请检查您的代码是否泄漏。如果我没有弄错的话,有一些。