如何在 Alamofire 中使用 UITextField?

Posted

技术标签:

【中文标题】如何在 Alamofire 中使用 UITextField?【英文标题】:How To Use a UITextField with Alamofire? 【发布时间】:2020-04-07 13:23:01 【问题描述】:

我最近开始使用 Alamofire 而不是 URLSession 只是为了适应它并切换到更易读的简单代码库。我正在创建一个应用程序,其中有一个 UITextField,每当用户写一些东西并点击返回时,它都会通过 API 搜索特定数据。我现在想先将该数据打印到控制台中,但我不知道该怎么做。如何从我的模型中搜索任何特定数据?

编辑: 基本 URL 如下所示:“https://api.themoviedb.org/3/search/movie?api_key=[API_KEY]”。 要搜索特定标题,我们添加“&query=[电影名称]”。如何将查询的最后一部分添加到用户在文本字段中输入的内容中?

PS:我的模型使用了 ObjectMapper。

【问题讨论】:

您的意思是要将 Alamofire API 调用响应打印到控制台? 我想使用 Alamofire 从 api 获取数据并将其打印到控制台,而不仅仅是文本字段内的文本。例如,在我的模型中,我创建了不同的参数来表示有关电影的信息。我有标题、描述、发布日期等。例如,我想搜索标题并打印回描述。 【参考方案1】:

如果我们得到像这样的 json 格式的默认 API 调用响应

"success" : true,
"message" : "successfull"
"data" : 
       "field1" : "some data"
       

所以我们可以这样处理这个响应

AF.request(URL(string: "myurl.com")!,
               method: .get, 
               headers: AppConstants.headers)
        .validate(statusCode:200..<300)
        .validate(contentType:[AppConstants.contentTypeJson])
        .responseJSON  (response) in
            switch response.result 
            case .success(let data):
                guard let json = data as? [String:AnyObject] else 
                    return
                

                let isSuccess =  (json["success"])?.boolValue ?? false
                if isSuccess 
                    print(json) //You can do something with response
                else
                    Data.currentError = (json["message"]) as? String ?? "-"
                

            case .failure(let error):
                print(error)
            
    

更多信息:https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#response-handling

【讨论】:

以上是关于如何在 Alamofire 中使用 UITextField?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift / Alamofire 中使用 multipartFormData?

如何在 Alamofire 中使用 UITextField?

如何在 Alamofire 中使用 NetworkReachabilityManager

如何使用 Swift 5 在 Xcode 10.2.1 中添加 alamofire

如何在 Alamofire 中使用 PUT 请求

如何在swift中使用alamofire上传图库图片