从 Alamofire 请求中快速打印数据

Posted

技术标签:

【中文标题】从 Alamofire 请求中快速打印数据【英文标题】:Print data from Alamofire request, swift 【发布时间】:2020-03-14 20:36:48 【问题描述】:

我提出了这个要求:

func AlamofireGetCode()

    let username: String = searchTextField.text!
    var url:String!
    url = "https:// ... "

    AF.request(url, method: .get, encoding: JSONEncoding.default)
        .responseJSON  response in
            switch response.result 
            case .success:
                debugPrint(response)
            case .failure(let error):
                fatalError("\(error)")
            
        

我收到了不同字段的回复:

[Result]: success(
"incomplete_results" = 0;
items =     (
            
        "username" = " ... "
        ...

如何在 Swift 中获取一些特定字段,例如“用户名”? 我想拥有所有用户的所有用户名并存储它们,你能帮我吗?

【问题讨论】:

【参考方案1】:

您需要提供一个类型来解析 JSON 响应。使用诸如 quicktype.io 之类的站点可以从您的 JSON 生成一个,但任何 Decodable 类型都可以。然后你可以使用 Alamofire 的 responseDecodable 处理程序来解析你的响应。

AF.request(url).responseDecodable(of: TypeToParse.self)  response in
    debugPrint(response)

【讨论】:

谢谢,您的回复是我所期待的 100%。我可以再问一个吗?如果想要在另一个视图中访问一个特定字段,如“用户名”,该怎么办?我在班级中声明了 Struct,因此可以在另一个视图中访问它,但我无法获取用户名数据 我的结构是这样的 struct UserInfo: Codable let totalCount: Int let compatibleResults: Bool let items: [Item] enum CodingKeys: String, CodingKey case totalCount = " total_count" case incompleteResults = "incomplete_results" case items // MARK: - Item struct Item: Codable let login: String let id: Int let avatarURL: String enum CodingKeys: String, CodingKey case login, id case avatarURL = "头像_url" 您很可能需要使用完成处理程序将接收和解析的响应传递回需要它的其他屏幕。我建议你调查一下。【参考方案2】:

将您的回复粘贴到https://jsonparseronline.com/ 以查看对象的结构。它将显示您可以使用下标访问的所有键和值。

【讨论】:

以上是关于从 Alamofire 请求中快速打印数据的主要内容,如果未能解决你的问题,请参考以下文章

发送请求时从数据库中删除 Swift Alamofire“+”号

快速的 Alamofire POST 请求

数据未使用 Alamofire + SwiftyJSON 加载到 UITableView

用 alamofire 快速发送获取请求

Alamofire JSON 请求未从服务器中提取数据

快速发送带有参数的 Alamofire 请求