2016-03-31 33 views
0

Sorum, CoreData (yerel veritabanı) senkronizasyonunun iCloud ile nasıl kontrol edileceğidir. Yerel verileri değiştirdiğimi bildiğim gibi iCloud otomatik olarak değişecektir. ICloud verileri hazır olana kadar yerel ile senkronize etmek mümkün mü?CoreData + iCloud Sync zamanlama kafa karıştırıcı

cevap

0

iki aşamalı eşzamanlı bir tür vardır üzerinden işlenen kadar icloud senkronizasyon gerçekleştirilmez. Yerel verileriniz önce senkronizasyon için bir konteynere konur ve daha sonra konteyner iCloud ile senkronize edilir. Bu bir iblis sistemi tarafından yapılır. Bunu kontrol edemezsin.

"Yerel belge" ile "bulut belgesi" arasında farklılık göstermek istersiniz. Yorumlarda belirtildiği gibi, bu, anti-kavramsal bir şey. Ancak, bunu elde etmek için iki strateji vardır. Hiçbiri benim tarafımdan test edilmedi.

  1. Belleğe yaptığınız değişiklikleri kaydetmeyin.

  2. Deponun yerel bir sürümünü ekleyin ve yerel sürümle senkronize edilmiş sürüm arasında geçiş yapın (migratePersistentStore:toURL:options:withType:error: (NSPersistentStoreCoordinator).

Her iki varyant

büyük bir dezavantaja sahiptir: Eğer zaman gecikme olursa (senkronize) belgesi, potansiyel olarak yerel sürümü ve her yerde versiyonu uzakta daha çalıştırmak kaydedin. Bu, çözümlenemeyen çatışmalara yol açar. 'un, Apple'ın mağazayı en kısa zamanda ve en kısa zamanda kaydetmesini tavsiye ettiği bir nedendir (= public yapma). BTW: iCloud senkronizasyonu ile Temel Veriler, grup yazılımı değildir. Bunu bu şekilde kullanmaya bile çalışmayın.

+0

Yorumunuz için teşekkürler, burada yakın bir senaryo var: sürüm kontrol uygulamasını kullanarak im ve projemde çok fazla kod ekledim/ekledim (resim yerel verilerimdir), fakat bunu yapmak istemiyorum "commit" düğmesine tıklayana kadar sunucu (iCloud). Bu yüzden "zamanlama" hakkında biraz kafam karıştı. – Meonardo

+0

Bu, çerçeve ile savaşmaktan başka bir şey değildir. "Bulut belgesine" itilmiş bir "yerel belge" yok. ICloud ile senkronize edilen yalnızca bir ve tek belge var. A. –

+0

'a iki olası çözüm ekliyorum Harika bir fikir! Çok yararlı. – Meonardo

0

zamanını kontrol etmek için bir direkt yol yoktur, ama yerel - yönetilen nesne bağlamında değişir save: yöntem