加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

AFNetworking和Swift – 保存json响应

发布时间:2020-12-14 04:47:23 所属栏目:百科 来源:网络整理
导读:我想在 swift中发出一个GET请求来获取一些Json数据. 我尝试使用AFNetworking并且它有效,但我不知道如何返回我得到的Json. 我尝试了返回,但它是在GET之前制作的,所以我什么都没得到…… func makeGet(place:String) - String{ var str:String = "" let manage
我想在 swift中发出一个GET请求来获取一些Json数据.
我尝试使用AFNetworking并且它有效,但我不知道如何返回我得到的Json.

我尝试了返回,但它是在GET之前制作的,所以我什么都没得到……

func makeGet(place:String) -> String
{
    var str:String = ""
    let manager = AFHTTPRequestOperationManager()
    manager.requestSerializer.setValue("608c6c08443c6d933576b90966b727358d0066b4",forHTTPHeaderField: "X-Auth-Token")
    manager.GET("http://something.com/api/(place)",parameters: nil,success: { (operation: AFHTTPRequestOperation!,responSEObject: AnyObject!) in
            str = "JSON:  (responSEObject.description)"
            println(str) //print the good thing
        },failure: { (operation: AFHTTPRequestOperation!,error: NSError!) in
            str = "Error: (error.localizedDescription)"
        })
    return str //return ""
}

你能帮助我吗 ?

解决方法

您没有从该函数获得响应,因为GET操作是异步发生的.也就是说,执行顺序如下:

>你打电话给makeGet
> makeGet创建管理器,它会触发GET请求
> makeGet完成执行并返回一个空字符串
>(一段时间后)管理器从服务器接收一个值并执行成功或失败块.

因此,您可以访问从服务器返回的JSON的唯一一次是在步骤4中,您需要找到一种存储该值的方法,以便您可以解析它或使用它或其他任何东西.这里有多种选择 – 一种是定义在类实例上调用事件处理程序的闭包,如下所示:

class MyClass {

    func jsonLoaded(json: String) {
        println("JSON: (json)")
    }

    func jsonFailed(error: NSError) {
        println("Error: (error.localizedDescription)")
    }

    func makeGet(place:String) {        
        let manager = AFHTTPRequestOperationManager()
        manager.requestSerializer.setValue("608c6c08443c6d933576b90966b727358d0066b4",forHTTPHeaderField: "X-Auth-Token")
        manager.GET("http://something.com/api/(place)",responSEObject: AnyObject!) in
                self.jsonLoaded(responSEObject.description)
            },error: NSError!) in
                self.jsonFailed(error)
            }
        )
    }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读