Domanda

Quale sarebbe il modo più elegante per ricevere dati da un'API JSON in streaming utilizzando AfnetWorking? AfnetWorking fornisce un eccellente supporto per la ricezione di dati non streaming dalle API JSON, ma non sono riuscito a trovare esempi di streaming JSON.

È stato utile?

Soluzione

AfnetWorking non ha un'operazione JSON in streaming in streaming incorporata, ma dovrebbe essere semplice per crearne una tua.

  • Crea una sottoclasse di AFJSONRequestOperation
  • Utilizzare il outputStream Proprietà dell'operazione durante l'inizializzazione per collegarlo a un parser JSON che supporta l'analisi in stile SAX (come Yajl). Il parser leggerà i dati e costruirà l'oggetto JSON mentre arriva
  • Collegare il responseJSON Proprietà per leggere l'oggetto memorizzata nella cache dal parser
  • ... o a seconda di come stai facendo lo streaming, potrebbe essere necessario aggiungere una nuova proprietà che definisce un blocco da eseguire quando tornano nuovi oggetti JSON (EG setReceivedJSONBlock:((^)(void (id JSON))block). Questo blocco sarà probabilmente attivato dai metodi delegati inviati dal parser (ad esempio <YAJLParserDelegate> -parserDidEndDictionary:).

Se sei in grado di farlo funzionare, ti incoraggio a pubblicare e condividerlo con gli altri. Penso che questo potrebbe essere utile per parecchie persone.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top