ios – Swift 2.0:使用JSON与REST API进行通信的最佳实践

ios – Swift 2.0:使用JSON与REST API进行通信的最佳实践,第1张

概述我开始迁移到 Swift并且意识到大多数示例代码在Swift 2.0中不再起作用,并且作为初学者很难进入. 那么使用标准库中的Swift方法与Swift 2.0中的REST API进行通信的最佳实践是什么? 任何人都可以为以下场景提供Swift 2.0代码吗? >从服务中获取JSON数据 >解析JSON(因此可在Swift中使用) >使用JSON编码数据发送POST请求 请提供没有框架的解决方案. 我开始迁移到 Swift并且意识到大多数示例代码在Swift 2.0中不再起作用,并且作为初学者很难进入.

那么使用标准库中的Swift方法与Swift 2.0中的REST API进行通信的最佳实践是什么?

任何人都可以为以下场景提供Swift 2.0代码吗?

>从服务中获取JsON数据
>解析JsON(因此可在Swift中使用)
>使用JsON编码数据发送POST请求

请提供没有框架的解决方案.希望它可以帮助所有其他人尝试从Web上获取教程以使用Swift 2.0.

解决方法 我也是初学者,我不能说我所做的是最佳实践,但这里是我如何处理使用NSURLSession和闭包的GET请求.

首先,我定义了一个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看起来像这样:
{标题:“一些书”,作者:“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进行通信的最佳实践所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1046627.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存