菜肴有指向餐馆,餐馆有地理位置。查询按距离排序的菜肴?

时间:2015-07-11 19:59:22

标签: ios objective-c cocoa-touch parse-platform

我的应用程序使用Parse作为后端,显示附近餐馆的菜肴。我已经设置了Parse,因此我有两个课程,Dish和Restaurant。每个Dish都有一个名为restaurant的属性,它是指向餐厅类objectId的指针。每个餐厅都有一个名为location的地产,这是一个地理位置。我的目标是运行一个查询,返回一系列菜肴,按其距离排序。

我不能把这些碎片放在一起。我想我可能需要做两个查询,但我不确定这是怎么回事。这是我到目前为止的代码:

PFGeoPoint *userGeoPoint = [PFGeoPoint geoPointWithLatitude:self.currentLocationLatitude longitude:self.currentLocationLongitude]; 

PFQuery *query = [PFQuery queryWithClassName:@"Dish"]; 

[query whereKey:@"restaurant.location" nearGeoPoint:userGeoPoint]; 

[query findObjectsInBackgroundWithBlock:^(NSArray *dishes, NSError *error){ 
    if (error) { 
        // The query failed 
        NSLog(@"error in geo query!"); 
    } else { 
        // The query is successful 
        NSLog(@"Here are the dishes from my query:"); 
        NSLog(@"%@", dishes); 
    } 
}];

1 个答案:

答案 0 :(得分:0)

我认为你是正确的,你需要两个查询,因为你不能whereKey:@"restaurant.location"

我首先使用whereKey:@"location" nearGeoPoint:userGeoPoint查询Restaurant类,获取一系列附近的Restaurant PFObjects(例如myRestaurants),然后对Dish类使用第二个查询:query whereKey:@"restaurant" containedIn:myRestaurants得到那些餐馆的菜肴。