HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – Swift 2.0:使用JSON与REST API进行通信的最佳实践大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我开始迁移到 Swift并且意识到大多数示例代码在Swift 2.0中不再起作用,并且作为初学者很难进入.

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

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

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

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

@H_197_17@解决方法
我也是初学者,我不能说我所做的是最佳实践,但这里是我如何处理使用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@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,请注明来意。