大佬教程收集整理的这篇文章主要介绍了ios – Swift 2.0:使用JSON与REST API进行通信的最佳实践,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
那么使用标准库中的Swift方法与Swift 2.0中的REST API进行通信的最佳实践是什么?
任何人都可以为以下场景提供Swift 2.0代码吗?
>从服务中获取JSON数据
>解析JSON(因此可在Swift中使用)
>使用JSON编码数据发送POST请求
首先,我定义了一个NetworkOperation类,它将处理NSURLSession.它具有以下属性:
lazy var config: NSURLSessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration() lazy var session: NSURLSession = NSURLSession(configuration: self.config) let queryURL: NSURL
在初始化程序中,我设置了queryURl.配置和会话变量是懒惰的,因为我希望它们仅在使用我的网络操作时才被初始化.
然后我有一个执行GET请求并检索JSON的方法.此方法接受闭包作为参数.这个闭包将由调用者提供,并允许我将dataTask响应捕获到调用上下文中.
func downloadJSONFromURl(completion: ([String:AnyObject]?) -> ()) { let request = NSURLrequest(URL: queryURL) let dataTask = session.dataTaskWithrequest(request) { (let data: NSData?,let response: NSURLResponse?,let error: NSError?) -> Void in // 1: check http Response for successful GET request guard let httpResponse = response as? NShttpURLResponse,receivedData = data else { print("error: not a valid http response") return } switch (httpResponse.statusCodE) { case 200: // 2: Create JSON object with data do { let jsonDictionary = try NSJSONserialization.JSONObjectWithData(receivedData,options: NSJSONReadingOptions.AllowFragments) as? [String:AnyObject] // 3: Pass the json BACk to the completion handler completion(jsonDictionary) } catch { print("error parsing json data") } default: print("GET request got response \(httpResponse.statusCodE)") } } dataTask.resume() }
这个例子非常简单并且不处理错误,但你可以看到我如何将JSON解析为[String:AnyObject]到try catch块中.
之后,我将字典发回到名为completion的闭包中,该闭包将对JSON执行必要的验证,然后将其转换为Swift对象.
在该闭包中,我使用可选绑定来安全地构建我的对象.
例如,假设我正在检索一本书,而JSON@R_197_7957@:
{标题:“一些书”,作者:“J.Doe”}
if let title = json["author"] as? String,author = json["author"] as? String { let book = Book(title: title,author: author) serviceCompletion(book) }
因为我喜欢闭包,所以我将转换后的JSON发送到提供给服务的其他闭包中.您可以在我的github上看到完整的示例.它来自Treehouse教程.
希望这会有帮助.
以上是大佬教程为你收集整理的ios – Swift 2.0:使用JSON与REST API进行通信的最佳实践全部内容,希望文章能够帮你解决ios – Swift 2.0:使用JSON与REST API进行通信的最佳实践所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。