【问题标题】:how to get a new JSON response without closing and reloading the app如何在不关闭和重新加载应用程序的情况下获得新的 JSON 响应
【发布时间】:2016-02-07 20:23:55
【问题描述】:

我刚开始构建一个使用 REST api 的应用程序,我正在控制台中测试 JSON 响应。

我有 2 个用户输入的 UITextFields jobKeywordlocation,然后单击“搜索”按钮后 JSON 将显示在控制台中。

但如果不关闭重新运行的应用程序,我将无法获得新的搜索。如何在不离开应用程序的情况下更新我的字段并获得新的响应?我是 iOS 开发的新手。这是 ViewController.swift:

import UIKit
import Alamofire
class ViewController: UIViewController {

let headers = ["Host":"data.usajobs.gov",
               "User-Agent":"dezbill@icloud.com",
               "Authorization-Key":"********************"
             ]

@IBOutlet weak var jobKeywordTxt: UITextField!

@IBOutlet var locationTxt: UITextField!
@IBOutlet weak var locationState: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()

}

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(true)

}


@IBAction func searchBtn(sender: UIButton) {

    let jobKeyword = jobKeywordTxt.text
    let location = locationTxt.text

    Alamofire.request(.GET, "https://data.usajobs.gov/api/Search", parameters:["LocationName":location!,"PositionTitle":jobKeyword!]).responseJSON { response in
          debugPrint(response)
          print(self.locationTxt.text)
    }
}

}

screenshot of project

【问题讨论】:

  • 点击第二次搜索时会发生什么?代码看起来没问题。
  • 我不确定您是在谈论异步函数、在后台请求和更新还是在获取 JSON 时出现问题。
  • 例如:我在 jobKeyword 文本字段中输入“软件”,在位置文本字段中输入“迈阿密,佛罗里达”。单击搜索时,我在控制台中收到 JSON 响应。现在,如果我清除字段并为每个字段输入新值(例如“护士”和“德克萨斯州达拉斯”),然后再次单击搜索按钮,什么都不会发生!
  • 您好,首先让我们澄清一下您的函数“searchBtn”是否会在您每次单击时被触发。简单地放一个日志,看看每次按下按钮时是否打印日志。然后我们就可以解决问题了。使用下面这行代码:) print("Function called")
  • @Ruchira,已经这样做了,每次按下按钮时都会在控制台中记录城市名称 print(self.locationTxt.text)。如果您有兴趣解决问题,请将您的电子邮件发送给我,我会将您添加到回购中

标签: ios json swift rest alamofire


【解决方案1】:

你可以试试下面的代码,看看它是否有效。

Alamofire.request(.GET, "https://data.usajobs.gov/api/Search", parameters:["LocationName":location!,"PositionTitle":jobKeyword!])
     .response { request, response, data, error in
         print(request)
         print(response)
         print(data)
         print(error)
      }

如果仍然无法正常工作,请尝试安装 Charles(Http 调试器)并通过 Charles 路由您的网络流量。然后,您至少可以确定是否每次都发送了请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 2017-08-13
    • 2021-11-15
    • 2014-07-21
    • 1970-01-01
    • 2019-03-14
    相关资源
    最近更新 更多