2011-05-12 11 views
6

Öğeleri aramanızı ve belirli bir noktadan mesafeye göre sıralamanızı sağlayan bir uygulama geliştiriyorum. Kullandığım yaklaşım, uzak API'dan veri aldığımda, mevcut konumumdan uzaklığı hesapladığım ve bunu CoreData yönetilen nesnenin bir özniteliği olarak sakladığımdur. Bu, evde otururken oturduğumda gayet iyi çalışıyor, fakat cihazda kullandığımda, cihazı farklı bir yere taşıyın, bu durumda mesafe artık tüm elemanlar için değiştiğinden, hatalar yanlış.iOS'ta coredata'yı kullanarak geospacial öğeleri sıralama. Tüm 'mesafe' niteliklerini güncellemenin en hızlı yolu

Göz önünde bulundurduğum yaklaşım, tüm temel veri deposunu çalıştırıp iPhone'un konumu değiştirdiğinde uzaklık özniteliğini güncellemektir.

Kullanıcıların bir inç hareket ettirdiği her zaman tam CoreData deposundan geçiyor olacağından, buradaki en büyük sorun her hareketi yapamam. Bu bataryayı öldürmek ve yavaş, kullanıcı deneyimini

Bazı çözümler neden olur:

  1. Ben çekirdek veri depolamak öğelerin sayısını sınırlayabilir. Genel olarak 100'den fazla veya çok ilgili öğe olmamalıdır.
  2. Yeniden hesaplama sayısının, yalnızca kullanıcının konumu bazı önemli mesafeler değiştiğinde yeniden hesaplanarak sınırlandırılabilir.
  3. Tüm yeniden hesaplamalarını arka planda yapabilirim.

Bu çözümler muhtemelen işe yarasa da, daha zarif bir çözüm olması gerektiğini hayal ediyorum.

Buna benzer bir sorun çözen var mı?

cevap

5

Muhtemelen bildiğiniz gibi, CLLocationManager öğesini distanceFilter ve istenenAccuracy kullanarak yapılandırabilirsiniz. Bu, 2. maddeyi kapsamaktadır. Bunlar, devasa öğeler olmadıkça, çekirdek verileri hiçbir şekilde vurgulamayacaktır.

Her zaman arka planda UI olmayan şeyler yapmayı denemelisiniz.

Sanırım siz onu ele aldınız; Bu yaklaşım konusunda yetersiz bir şey yok.

Bunu deneyin ve varsa performans sorunlarının neler olduğunu görün.

İlgili konular