- 资讯类型: 翻译
- 来源页面: http://mobile.tutsplus.com/tutorials/iphone/ios-quick-tip-interacting-with-web-services/
- 资讯原标题: iOS Quick Tip: Interacting with Web Services
- 资讯原作者: Brandon Trebitowski
- 翻译词数: 780 词
- 我的评论:话说我其实不喜欢水果,可以的话我更愿意译android的,这篇通篇不懂,有问题也不要问我
对这篇文你有啥看法,跟贴说说吧!欢迎口水和板砖,哈哈。欢迎大家和我们一同分享更多资讯。
本帖最后由 十旋转45度 于 2012-5-5 18:53 编辑 教程详情 技术:IOS SDK 难度:中级 完成时间:15 - 30分钟 iOS开发有时需要让应用程序与Web服务交互,您可能要访问远程数据,分析社交网络的反馈,或是下载素材(asset)到应用中。本贴士将介绍些不借用第三方库实现的方法! 当然,很多第三方库能简化Web服务交互,如ASIHTTPRequest,AFNetworking以及RESTKit。虽然这些库很实用,但其实很多时候是杀鸡焉用牛刀的。三方库的使用会让内存会积累许多额外变量,给应用增加不少不必要的代码。另外,为了适应各库工作流还会被修改。 简化 曾几何时,我也习惯用这些库作为辅助,这样缩短了开发所需的时间并降低复杂度。当然,许多情况下确实是这样的,但不可能面面俱到。除非你对这些库引擎了若指掌,否则你很可能会增加了复杂度。 而今天,我要介绍一个非常简单的方法,是关于Web服务获取接口以及从网络上下载数据的。不久前,我就将此方法运用在我最新的iOS MUD客户端Pocket MUD Pro上来获取远程音频,设置以及数据。此方法涉及的“内置”技术关于下载,解析以及使用远程的JSON和素材,如图像和声音。 获取远程数据 在IOS版本4之前,异步获取数据是相当痛苦的,通常得为发送请求创建个类,为解析及响应再创建个类。借助Grand Central Dispatch(**)能够内联实现并让你的代码保持简洁。以下你所见的代码就是关于从网上远程获取JSON文件: 代码一开始先是获取苹果的3个调度队列之一,这些调度队列是可以异步执行的,并且以默认优先级运行代码块。当然,你也可以轻松创建自己的队列。无论用的哪种方式,借助Grand Central Dispatch(**)代码都能在主线程以外的单独的线程运行。 接着,我们创建了URL并塞入到NSString的方法stringWithContentsOfURL:encoding:error:用以获取JSON数据。最后,返回显示字符串与异常(若异常存在的话)。 此方法非常高效,但不好控制。虽然你能够获晓异常为何,但其不允许指定异常事件的超时属性。默认的超时时间为30秒左右,若你想为处理超时或其它什么行为添加额外控制,那将字符串方法替换为NSURLConnection。 解析JSON 苹果的iOS 5内置了JSON解析器,允许包含JSON的字符串,并能够将其转换成一个NSDictionary或一个NSArray。为了能解析,使用以上代码返回的JSON,在代码块末尾添加这些行: NSJSONSerialization类用于解析JSON字符串并将其转换为适应你的JASON格式的NSDictionary或NSArray。这样就轻松多了,而今你可以这样调用JSON字符串里的变量: 就是这样!这是一非常基础的方式,仅调用原生SDK类就可享有网络服务。好的,接下来介绍更有趣的部分......图像! 获取远程图像 我们可以使用上面介绍的方法获取任何类型的远程媒体。此例中,我会告诉你如何从人气博客XKCD下载图像。 同样,首先我们获取一个队列让其异步运行。接着,我们使用NSData的方法dataWithContentsOfURL:options:error:来获取的图像数据。一旦确认有数据返回,我们就得到了磁盘上缓存目录的引用,于是就能够保存图像。 就是这么简单!您可以如此使用获取的图像: 结论 希望本文能够帮助你脱离为了实现网络交互对第三方库的依赖。你现在应该对如何创建一成熟的(full blown)互联网应用有所了解。若您有任何疑问或意见,请在这里留言或Twitter我。 码字愉快! |