Ich habe eine Core Data-Datenbank mit Breiten- und Längengradeigenschaften. Gibt es eine Möglichkeit, die getDistanceFrom:
-Methode von Core Location zu verwenden, um die fünf nächstgelegenen Standorte zu einem CLLocation
aus dem GPS zu finden? Muss ich alle Objekte mit Core Data laden und durch sie analysieren, indem ich getDistanceFrom:
auf jedem oder gibt es einen einfacheren Weg?Kerndaten und Kernposition
Antwort
Sie werden durch einen nach dem anderen haben zu durchlaufen; Soweit ich weiß, gibt es keinen anderen Weg, es zu tun.
Sie können dies jedoch effizienter machen, indem Sie eine Begrenzungsbox verwenden, wenn Sie die Elemente aus den Stammdaten abrufen. Dadurch verringert sich die Anzahl der Objekte, die zurückgegeben werden.
d So etwas wie
float latMax = wantedLat + 1;
float latMin = wantedLat - 1;
float lngMax = wantedLng + 1;
float lngMin = wantedLng - 1;
NSPredicate *predicate = [NSPredicate
predicateWithFormat:@"lat > %f and lat < %f and lng > %f and lng < %f",
latMin, latMax, lngMin, lngMax];
Obwohl, je nachdem, wie viele Daten Sie haben und wie eng es im Abstand ist, sollten Sie eine andere Zahl als 1 verwenden!
Sam
PS Auch habe ich nicht berücksichtigt die Tatsache, dass Länge Wraps!
Sie können CoreData nicht verwenden, um das nächste Objekt zu finden, aber Sie können die Abfrage eingrenzen, indem Sie eine Begrenzungsbox verwenden. Um das nächste Objekt zu finden, möchten Sie vielleicht einfach den Unterschied in lat/long verwenden, der erheblich schneller ist als die Berechnung der tatsächlichen Entfernungen.
Ich hatte eine ähnliche Frage:
Danke für den Link. –
Das folgende Beispiel ist fast das, was Sie suchen. Es verwendet eine SQLite-Funktion, um den Abstand in der ORDER BY-Klausel (Haversine-Formel) zu berechnen. Problem ist, dass dieses Beispiel nicht Core-Daten, sondern die SQLite-API direkt verwendet.
- 1. Kerndaten Thread- und Sperrkonfliktprobleme
- 2. Kerndaten und semipermanente Daten
- 3. iphone Kerndaten und Entität Vererbung
- 4. Kerndaten: NSManagedObjectContext, NSFetchResultsController und UIManagedDocument
- 5. Geordnete Sätze und Kerndaten (NSOrderedSet)
- 6. Kerndaten, NSPredate und to-many Schlüssel
- 7. Kerndaten - Binding-Problem in NSNumberFormatter und NSDatePicker
- 8. Eltern Entität und Beziehung in Kerndaten
- 9. Bild in Kerndaten und Retina-Display speichern?
- 10. Tabellenansicht, Kerndaten und JSON in Objective C
- 11. updating Kerndaten uitableview Xcode
- 12. Editierbare TableView mit Kerndaten
- 13. Benutzerdefinierte Kerndaten SectionNameKeyPath
- 14. Spezielle Kerndaten holen
- 15. Kerndaten - Quiz-Abfrage - Aufnahmefortschritt?
- 16. Relationship Fehler mit Kerndaten
- 17. Kerndaten Multithread mit
- 18. Kerndaten "Nicht sichern" -Flag
- 19. Kerndaten: 3 Tabelle beitreten?
- 20. Kerndaten holen Ergebnisse
- 21. Lokalisierung mit Kerndaten
- 22. Kerndaten Standardwert addXXObject
- 23. NSTextView von Kerndaten unterstützt
- 24. UIBezierPath Persistenz mit Kerndaten
- 25. Aus Kerndaten löschen
- 26. Speichern von Daten in Kerndaten
- 27. Kerndaten-Datenbank löscht sich selbst
- 28. Beziehung in Kerndaten als NSSet
- 29. Kerndaten mit iOS-App senden
- 30. "Export" Kerndaten mit magischen Datensatz
Sieht wie nützlicher Code aus, danke. –
Danke dafür - ich habe etwas ähnliches in meiner App verwendet. Aber es sieht für mich aus, dass beide Sätze von < and > jetzt falsch sind! – iPhoneDollaraire
Sie haben Recht - hoppla! – deanWombourne