Streaming JSON con Afnetworking su iOS
-
28-10-2019 - |
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.
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