2016-03-29 6 views
1

JSON yanıtlarını otomatik olarak Realm ile eşlemek ve nesneleri veritabanına kaydetmek için aşağıdaki çerçeveleri bir araya getirmeye çalışıyorum.Yerel yaratıldıAb & updatedAt timestamps in Realm

  • Diyar
  • Alamofire
  • ObjectMapper
  • AlamofireObjectMapper Ben bir yeniyse createdAt (yerel sunucudan gelmiyor damgası) zaman damgası ayarlamak istediğiniz Bununla

nesne ve her zaman güncelle updatedAt. updatedAt, kaydolmak için herhangi bir tetikleyici olmaması ve temiz bir şekilde yapması dışında, ayarlanması oldukça kolaydır.

realm.add(object, update: true)'u kullanarak başladım, ancak bunun mevcut createdAt null olduğunu fark ettim.

Bir çözüm, kaydetmeden önce nesneyi her zaman almaktır, ancak createdAt'un bozulmaması için çok fazla nesne getirildiğinde oldukça ağır görünüyor.

  1. Diyar herhangi tetikleyiciler örneğin kod çalıştırmasına orada abone olmak değil misin Kaydetmek/yük?
  2. Realm'de böyle zaman damgalarını işlemenin en iyi yolu nedir?
+1

Eğer 'realm.add (object, update: true)' kullanmak isterseniz, nesnenizin birincil anahtarı olmalıdır. Sende var mı? – bcamur

+0

evet! Sunucu/istemci ve UUID'yi birincil anahtar olarak kullanarak veri senkronizasyonu yapıyorum. – thejaz

+0

En iyi seçenekleriniz, nesneyi birincil anahtara getiriyor, onu güncelliyor ve Realm'ın performansına güveniyor gibi görünüyor :) 'Çok sayıda nesne almak' dediğinizde kaç nesneden bahsediyorsunuz? – bcamur

cevap

1

Yorumlar içinde tartışılanlar kesinlikle en iyi yaklaşımdır. Realm, object'da yer almayan özellikleri güncelleştirmeyecektir (yani, yalnızca birkaç özelliği gösteren bir Dictionary ise), ancak uygun bir Realm Object ile güncelleştiriyorsanız, nil geçerli bir değerdir. Dokunma bilmemesi gereken bölge.

Realm'in performansı, nesnelerin ve değerlerinin aslında özelliklerine erişmeye başlayana kadar belleğe belleğe alınmadığı gerçektir, bu nedenle yorumlarda belirtildiği gibi nesneleri el ile güncelleştirmek ve herhangi bir fark edilebilir performans yükü.

+0

Yanıt için teşekkürler! Soruyu (1) de ekleyebilir misiniz? Nesneleri kaydetme/yükleme konusunda kod çalıştırmanın yaygın bir ihtiyacı gibi görünecektir (örneğin, kaydetmeden önce updateAt zaman damgasını ekleme)? Bu iş listenizde mi yoksa bunun hakkındaki düşünceleriniz var mı? – thejaz

+0

, uygulamamı CoreData'dan Realm'ye geçirmek için bir sonraki soruna ulaştı: https://github.com/realm/realm-cocoa/issues/1277. Tetikleyicileri kaydetmek, ilgili nesnelerin değerlerinin güncellenmiş bir önbelleğe alınmış değerini tutmak için daha basit hale getirir. – thejaz

+0

@bdash/TiM Yüklemede bildirim almak veya kaydetmek için herhangi bir tetikleyiciniz var mı? – thejaz