Nasıl sync CoreData bir DİNLENME uyumsuz ve aynı zamanda düzgün bir REST web hizmeti yaymak UI hataları
Hey, bizim app burada model katman üzerinde çalışıyorum.
Şartları biraz böyle
- İPhone OS 3.0 üzerinde çalışması gerekir .
- Bizim veri kaynağını Dinlendirici Raylar bir uygulamadır.
- Verileri yerel olarak Temel Verileri kullanarak önbellek etmeliyiz.
- İstemci kodu (UI kontrolörler) mümkün olan her türlü ağ işleri ile ilgili olarak çok az bilgiye sahip olmalıdır ve/güncelleme Çekirdek Veri API ile modeli sorgu.
Bu kontrol ettimWWDC10 Oturumu 117Sunucu tabanlı Kullanıcı deneyimlerine dayanarak, bazı zaman*,* 8*,* 7 RestfulCoreData çerçeveler kontrol geçirdi.
Amaç Kaynak çerçevesinde kendi Temel Veri konuşmaz ve sadece DİNLENMEK için bir istemci uygulamasıdır. Çekirdek Kaynak ve RestfulCoreData kodunuzu Çekirdek Veri konuş ve model katmanı arka planda tüm somun ve cıvata çözmek varsayalım.
Tüm Temel Kaynak veya RestfulCoreData ya da yukarıdaki tüm gereksinimleri karşılar ama şu ana kadar ve ben başlangıçta görünüyor, ama hiçbiri görünüşte doğru çözmek başına bir kaç şey Var:
- Ana iş parçacığı sunucu yerel güncelleştirmeleri kaydedilirken bloke edilmemelidir.
- Eğer kaydetme işlemi başarısız olursa hata UI dağıtılmasını ve değişiklik yerel Çekirdek Veri depolama için kaydedilmesi gerekir.
Çekirdek Kaynak olursa sorun, kendi istekleri için sunucu zaman sana haber - (BOOL)save:(NSError **)error
üzerinde Yönetilen Nesne Bağlamı ve bu nedenle mümkün sağlamak doğru NSError örneği temel istekleri için sunucu başarısız bir şekilde. Ama kaydetme işlemi bitene kadar arama iş parçacığı engeller. BAŞARISIZ.
RestfulCoreData -save:
aramalarınızı tutar ve istemci iş parçacığı için ek bekleme süresi tanıtmak değil. Sadece NSManagedObjectContextDidSaveNotification
için saat sonra bildirim işleyicisi sunucuya gelen istekleri sorunları. Ama bu şekilde -save:
çağrı her zaman başarıyla tamamlanır (bana verilen Temel Veri iyi ile kaydedilen değişiklikleri) ve istemci kod aslında adı hiçbir şekilde bilmek kurtarabilir başarısız oldu geçirilmesine sunucu çünkü bazı 404
421
ya da her neyse sunucu tarafında bir hata oluştu. Ve hatta daha fazla, yerel depolama verileri güncelledik olur, ama sunucu hiç bir değişiklik haberi var. BAŞARISIZ.
Yani, bütün bu sorunların çözümüne ortak uygulamaları / olası bir çözüm arıyorum:
- Ağ isteklerinin gerçekleşmesi sırasında
-save:
her bir çağrı engellemek için iş parçasıyla istemiyorum. - Bazı eşitleme işlemi ters giden bir şekilde UI bildirim almak istiyorum.
- Sunucu isterse de başarısız kurtarmak gerçek Çekirdek Veri başarısız istiyorum.
Herhangi bir fikir?
CEVAP
Gerçekten bu kullanma durumu için RestKit (http://restkit.org) bakmak gerekir. Yerel Çekirdek destekli bir Veri önbelleği için modelleme ve senkronizasyonu uzaktan JSON kaynakları problemlerini çözmek için tasarlanmıştır. Tamamen ağ mevcut olduğunda önbellekten çalışma için Çevrimdışı modu destekler. Tüm senkronize bir arka plan iş parçacığı (ağ erişimi, yük ayrıştırma, birleştirme ve yönetilen nesne bağlamı) oluşur ve neler olduğunu söyleyebilirsiniz temsilci yöntemleri zengin bir set var.
Bellek kullanımını azaltmak ve bellek ...
3, nasıl dinlenme uygulaması olarak ay...
Nasıl dosyaları zaman uyumsuz olarak y...
Nasıl terminalden Curl ile JSON veri g...
Nasıl bir WordPress kullanmak ile aynı...