将来自互联网的数据(由PHP压缩和编写)传输到iOS应用程序的最佳方法是什么? 目前,该应用程序读取如下格式的字符串:
category1#object2#object3#object4~category2#object2#object3[…]
这是由#
和~
分开的。
有没有更好的方法来执行此操作,包括检索数据的方式(从中获取数据的网站是否为所有人开放)以及数据的格式化方式?
答案 0 :(得分:17)
使用JSON:
{"category1":["object1", "object2", "object3", "object4"], "category2":["object1", "object2"]}
所以说你有一个PHP对象或关联数组,你可以简单地在其上调用json_encode
并完成它。
在iOS端,您需要使用JSONKit来解析它。
关于管道这两端的最好的事情是对它们有原生支持。例如,json_encode
可以将任何PHP对象编码为可读的JSON字符串,而JSONKit可以解析JSON对象并将其存储在NSDictionary
或NSArray
中。
哎呀,使用JSONKit,它增强了功能(使用NSDictionary
和NSArray
上的类别)将NSDictionary
和NSArray
个对象转换为 JSON,所以你甚至可以拥有一个双向JSON通信管道。
(我们在Freeverse的游戏中执行此操作,尝试并测试了该方法。)
答案 1 :(得分:3)
而不是另一个JSON答案,我将提供一些关于“挑选最佳JSON库”的链接:
现在为我自己的JSON解析解决方案的无耻插件JSONKit:
答案 2 :(得分:2)
acani也使用JSON,但是如果你有一个非常长的源,XML更好,因为Apple已经构建了一个异步XML解析库,而JSON库是同步的。因此,使用JSON库,您必须等待完整的JSON响应下载,然后在访问任何元素之前进行解析。使用XML库,它在等待完全下载之前开始解析XML,并且在XML中的每个元素完成解析为Objective-C对象以供立即使用之后调用回调函数。因此,您可以在下载整个Feed之前访问对象。因此,对于小型Feed,使用JSON(因为我喜欢JSON,而且更容易)。对于大型Feed,请使用XML。希望他们很快就能推出异步JSON解决方案。
查看Top Songs Xcode示例应用程序,了解如何异步使用XML库。