2012-04-18 19 views
7

Bir yerel uygulama kalıcı (Store) ve bir Web karşı eşitlemeye devam eden bir uygulama oluşturmak için bir örnek uygulama veya daha mimari bir tartışma arıyorum. - Flickr gibi hizmet. Benim durumumda Salesforce, ancak model Flickr, Twitter, IMAP ve benzeri uygulamalar için birçok uygulamaya benzemelidir.iOS uygulaması - mimari/Web Sunucusu karşı CoreData eşitleme için

Örnek sorular: Senkronizasyonu başlatmak için en iyi noktalar nerede? Yerel değişiklikleri sürdürmek için kanıtlanmış veri yapıları nelerdir - tüm kimliği doğrulanmamış her değişiklik için yerel mağazada "değiştirilmiş" bir BOOL sürdürmek; Rekor seviye bayraklara karşı saha seviyesinde bir bayrağı tercih ederim)? Tabii ki bunu kendi başıma optimize etmeliyim ki, kayıt miktarını (100'lerin) ve değişikliklerin (günde 10'unu) ve uyuşmazlık olasılığını (benim durumumda bir alan seviyesinde düşük) bilmeliyim. İşte

cevap

3

bu yaklaşım gibi olacaktır: online veritabanı yansıtan bir yerel CoreData/SQLite veritabanı modelleme yoluyla

  1. Başlat.
  2. Her tablonun her satırına bir NSDate lastModified özelliği ekleyin. Bu, saha seviyesinde değil, kayıt seviyesindeki değişiklikleri izlememi sağlar. Bu senkronizasyon karmaşıklığını azaltmaya yardımcı olur ve çoğu gerçek dünya senaryosunda kayıt seviyesinde senkronizasyon yeterlidir.
  3. Uygulama başladığında otomatik senkronizasyon gerçekleştirin ve ayrıca gezinme çubuğunda belirgin bir "Senk" düğmesi sağlayın. Bu sayede, kullanıcı uzun bir süre sonra uygulama başladığında güncel bir veri kümesine sahip olur ve en son değişiklikleri bir gün boyunca senkronize edebilir. Uygulama kullanılırken arka plan senkronizasyonu yapmaktan kaçınırdım. Bu, başka şeylerle uğraşmaya çalıştığınızda uygulamanızı daha karmaşık ve hataya açık hale getirecektir. Bu nedenle, arka planda çalışana kadar arka plan/otomatik senkronizasyon üzerinde çalışmayı erteleyebilirsiniz.
  4. Senkronizasyonumun başlatılması ve isteğe bağlı olarak makul derecede iyi çalışmasını sağladıktan sonra, arka plan senkronizasyonunu desteklemeye çalışacağım. Ayrıca, "Senkronizasyon" butonunu kullanmayı denerim ve böylece kullanıcı senkronizasyon hakkında asla düşünmek zorunda kalmaz - (kullanıcı söz konusu olduğunda daima günceldir). Ancak bu, daha çok vadeli bir geliştirme olacaktır, ki bu sadece çalışma isteğimi sağlam bir şekilde senkronize ettiğimde “talep üzerine” çalıştıktan sonra denerdim.

Bu, başlamanıza yardımcı olur umarım. Bunlardan farklı olarak düşünürseniz duymak isterim.

+0

Çok teşekkürler Melsam !! Üzgünüm, projem bir süreliğine askıya alındı, ancak tavsiyelerinizle kısa bir süre çalışacağım. – tschloss

+0

Çalışma kodunun nasıl göründüğünü görmek için bize basitleştirilmiş bir örnek proje sunabilir misiniz? Teşekkürler @melsam! – surlac

+0

RW tarafından güzel bir eğitici buldu http://www.raywenderlich.com/15916/how-to-synchronize-core-data-with-a-web-service-part-1 – anoop4real

İlgili konular