相关疑难解决方法(0)

NSSortDescriptor - 按位置排序

我在Core Data中有一个地理位置列表(实体名称是"Stops").

我想按当前位置对它们进行排序,这样我就可以向用户显示哪些位置在附近.我正在使用NSFetchedResultsController,以便可以在UITableView中轻松显示结果.

我使用以下代码尝试此类:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"stop_lat" ascending:YES comparator:^NSComparisonResult(Stops *obj1, Stops *obj2) {
    CLLocation *currentLocation = locationManager.location;

    CLLocation *obj1Location = [[CLLocation alloc]initWithLatitude:[obj1.stop_lat doubleValue] longitude:[obj1.stop_lon doubleValue]];
    CLLocation *obj2Location = [[CLLocation alloc]initWithLatitude:[obj2.stop_lat doubleValue] longitude:[obj2.stop_lon doubleValue]];

    CLLocationDistance obj1Distance = [obj1Location distanceFromLocation:currentLocation];
    CLLocationDistance obj2Distance = [obj2Location distanceFromLocation:currentLocation];

    NSLog(@"Comparing %@ to %@.\n  Obj1 Distance: %f\n  Obj2 Distance: %f",obj1.stop_name, obj2.stop_name, obj1Distance, obj2Distance);

    if (obj1Distance > obj2Distance) {
        return (NSComparisonResult)NSOrderedDescending;
    }

    if (obj1Distance < obj2Distance) {
        return (NSComparisonResult)NSOrderedAscending; …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch core-data objective-c core-location ios

4
推荐指数
1
解决办法
1598
查看次数

标签 统计

cocoa-touch ×1

core-data ×1

core-location ×1

ios ×1

objective-c ×1