2017-08-25 2 views
0

Existe-t-il un moyen d'affiner mon prédicat pour être entre deux distances? Actuellement, tout ce que je peux créer est un prédicat qui prend un rayon singulier et trouve tous les objets dans ce rayon à partir de l'emplacement actuel de l'utilisateur.nspredicate personnalisé pour être entre deux distances

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

Pour une représentation visuelle, je voudrais saisir tous les objets dans la partie orange de ce dessin, le centre étant l'emplacement actuel de l'utilisateur. (Je peux actuellement seulement obtenir le jaune et l'orange). enter image description here

Répondre

1

Vous devriez pouvoir utiliser une déclaration BETWEEN:

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

ce travail ne marche pas, et se termine juste s'écraser avec une mauvaise exception sous-jacente. d'autres idées? J'ai essayé d'en trouver un seul et je n'ai pas vraiment eu de chance. – Shekar

+0

En fonction de l'installation, vous pouvez toujours ne pas utiliser NSPredicates ou utiliser des prédicats basés sur des blocs. Y a-t-il des informations pertinentes dans les journaux de crash? – Palle

+0

Pas familier avec un prédicat basé sur un bloc, je ferai quelques recherches. Les journaux de plantage disent simplement "prédicat invalide" car distanceToLocation: fromLocation n'est vraiment supposé prendre qu'un seul argument (au meilleur de ma compréhension). Peut-être y a-t-il un argument différent qui supporte la fonction between? – Shekar