Ios 自定义nspredicate介于两个距离之间

Ios 自定义nspredicate介于两个距离之间,ios,swift,nspredicate,Ios,Swift,Nspredicate,有没有办法把谓词缩小到两个距离之间?目前,我所能创建的只是一个谓词,它接受一个单一半径,并从用户的当前位置查找该半径内的所有对象 var locationPredicate = NSPredicate(format: "distanceToLocation:fromLocation:(%K, %@) < %f", "Location", location, 1000) 对于视觉表示,我希望抓取此图形橙色部分中

有没有办法把谓词缩小到两个距离之间?目前,我所能创建的只是一个谓词,它接受一个单一半径,并从用户的当前位置查找该半径内的所有对象

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

对于视觉表示,我希望抓取此图形橙色部分中的所有对象,中心是用户的当前位置。我目前只能得到黄色和橙色

您应该能够使用BETWEEN语句:

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

这不起作用,只会导致错误的谓词异常崩溃。还有其他想法吗?我一直想自己找一个,但运气不太好。根据设置的不同,你可以不使用NSPredicates或使用基于块的谓词。崩溃日志中有任何相关信息吗?不熟悉基于块的谓词,我会做一些研究。崩溃日志实际上只是说无效谓词,因为据我所知,distanceToLocation:fromLocation实际上只应该接受1个参数。也许有一个不同的参数支持between函数?似乎是原始谓词中的一个问题。我只是复制了谓词的<%f部分之外的所有内容,我用between语句替换了该部分。块谓词将被解释。