gpt4 book ai didi

objective-c - 从距当前位置最近到最远对 NSManagedObject 进行排序

转载 作者:行者123 更新时间:2023-12-04 02:36:42 26 4
gpt4 key购买 nike

我有一个定义了两个属性的核心数据模型

  • (双)纬度
  • (双)经度

现在,我想获取这些对象并根据它们与用户当前位置相比较的距离对它们进行排序。我已经知道如何获取当前位置,但我仍然想不通的是如何根据两个属性对结果进行排序。

我搜索过类似的东西,但我还是有点困惑。

如果有人能为我指出正确的方向,那就太好了。

谢谢

最佳答案

使用比较器 block 进行排序非常简单

NSArray *positions = //all fetched positions
CLLocation *currentLocation = // You said that you know how to get this.


positions = [positions sortedArrayUsingComparator: ^(id a, id b) {
CLLocation *locationA = [CLLocation initWithLatitude:a.latitude longitude:a.longitude];
CLLocation *locationB = [CLLocation initWithLatitude:b.latitude longitude:b.longitude];
CLLocationDistance dist_a= [locationA distanceFromLocation: currentLocation];
CLLocationDistance dist_b= [locationB distanceFromLocation: currentLocation];
if ( dist_a < dist_b ) {
return (NSComparisonResult)NSOrderedAscending;
} else if ( dist_a > dist_b) {
return (NSComparisonResult)NSOrderedDescending;
} else {
return (NSComparisonResult)NSOrderedSame;
}
}

正如我刚刚从 lnafziger 那里了解到的,您应该向其中添加他正在展示的有用的 hack/workaround¹。


¹从这个词中选择一个,对您来说具有最积极的内涵

关于objective-c - 从距当前位置最近到最远对 NSManagedObject 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10776644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com