2017-08-25 83 views
0

有没有办法将我的谓词缩小到两个距离之间?目前,我可以创建的所有谓词都是一个单独的半径,并从该用户的当前位置找到该半径内的所有对象。自定义nspredicate要在两个距离之间

var locationPredicate = NSPredicate(format: "distanceToLocation:fromLocation:(%K, %@) < %f", "Location", location, 
             1000) 

有关视觉表现,我想抓住所有对象在本图中橙色部分,与中心作为用户的当前位置。 (我目前只能得到黄色和橙色)。 enter image description here

回答

1

您应该能够使用BETWEEN声明:

NSPredicate(format: "distanceToLocation:fromLocation:(%K, %@) BETWEEN { %f , %f }", "Location", location, lowerBound, upperBound) 
+0

这并不工作,刚结束了与坏谓词异常崩溃。任何其他想法?我一直在试图自己找到一个,而且没有太多的运气。 – Shekar

+0

根据设置的不同,您总是可以不使用NSPredicates,也可以使用基于块的谓词。崩溃日志中是否有相关信息? – Palle

+0

不熟悉基于块的谓词,我会做一些研究。崩溃日志实际上只是说“无效谓词”,因为distanceToLocation:fromLocation实际上只应该接受1个参数(据我了解)。也许有支持between函数的不同参数? – Shekar