2012-02-20 36 views
6

AFNetworking'i kullanarak akışlı bir JSON API'sından veri almanın en zarif yolu ne olurdu? AFNetworking, JSON API'larından gerçek zamanlı olmayan verileri almak için mükemmel destek sağlar, ancak herhangi bir JSON akışı örneği bulamadım.AFNetworking üzerinden JSO'yu Aktarma IOS

+0

Hiç bu gibi bir şey aldınız mı? –

+0

Hatırladığım kadarıyla, çok basit bir JSON akış örneğini gerçekleştirmeyi başardım, ancak çok geçmeden IOS projesine olan ilgim (bu bir CampFire istemcisi) için düştü. Hiçbir şey bitmedi maalesef bundan hiç çıkmadı. :) – akisaarinen

+0

Yeterince adil. Güncelleme için teşekkürler! –

cevap

12

AFNetworking'in yerleşik bir akış SAX stili JSON işlemi yoktur, ancak kendi oluşturmak için doğrudan doğruya olmalıdır.

  • SAX tarzı ayrıştırmayı (örneğin Yajl gibi) destekleyen bir JSON ayrıştırıcı ya bağlamak için başlatma sırasında operasyon outputStream özelliğini kullanın AFJSONRequestOperation
  • bir alt sınıfı oluşturun. ayrıştırıcı verilerini okumak ve ayrıştırıcı
  • ... ya da akış nasıl olduğunu bağlı önbelleğe alınmış nesneyi okumak için responseJSON özelliğini bağlayın, ihtiyacınız olabilecek bu
  • gelir olarak JSON nesnesi kuracaksınız Yeni JSON nesneleri geri geldiğinde (örneğin, setReceivedJSONBlock:((^)(void (id JSON))block) bir bloğu tanımlayan yeni bir özellik eklemek. Bu blok muhtemelen ayrıştırıcıdan gönderilen delege yöntemleri tarafından tetiklenecektir (ör. <YAJLParserDelegate> -parserDidEndDictionary:).

Bu çalışmayı başarabilirseniz, bunu başkalarıyla paylaşmanızı ve paylaşmanızı tavsiye ederim. Bunun birkaç kişi için yararlı olabileceğini düşünüyorum.

+1

Cevabınız için teşekkürler, önerilen yaklaşımı deneyeceğim! – akisaarinen

+2

Bu, AFNetworking ile kolayca çalışmayacak. İlk olarak, AFURLConnectionOperation yönteminin bağlantısı: didReceiveData: doğru şekilde uygulanmadı. Sadece bağlantı tarafından sağlanan TÜM baytları her zaman tüketen akışlar için çalışır. Bu dosya akışlarını ve bellek akışlarını içerir. Bununla birlikte, bir ayrıştırıcının bir akışını bir NSURLConnectionDelegate ile "arayüzlemek" için, verileri nakletmek için bir araç olarak bir "eşzamanlı sıra" ve sabit boyutlu bir tamponu olan bir eşleştirilmiş akışı içeren daha ayrıntılı bir yaklaşım gereklidir. – CouchDeveloper

+0

Bu konuda biraz daha açıklayabilir misiniz? JSSt ayrıştırıcısına nasıl outputStream bağlanır? –