使用 AFNetworking 从流式 JSON API 接收数据的最优雅方式是什么?AFNetworking 为从 JSON API 接收非流式数据提供了出色的支持,但我找不到任何流式 JSON 的示例。
问问题
5078 次
1 回答
12
AFNetworking 没有内置的流式 SAX 样式 JSON 操作,但应该可以直接创建您自己的操作。
- 创建一个子类
AFJSONRequestOperation
- 在初始化期间使用操作的
outputStream
属性将其连接到支持 SAX 样式解析的 JSON 解析器(例如Yajl)。解析器将读取数据并在 JSON 对象传入时构建它 - 连接
responseJSON
属性以从解析器中读取缓存的对象 - ...或者根据您进行流式传输的方式,您可能需要添加一个新属性,该属性定义一个块以在新的 JSON 对象返回时执行(例如
setReceivedJSONBlock:((^)(void (id JSON))block
)。这个块可能会被解析器发送的委托方法触发(例如<YAJLParserDelegate> -parserDidEndDictionary:
)。
如果您能够完成这项工作,我会鼓励您发布并与他人分享。我认为这可能对很多人有用。
于 2012-02-20T20:38:27.937 回答