如何自动更新应用iOS应用

时间:2016-01-04 22:22:45

标签: ios swift auto-update

所以我正在为iOS制作货币追踪器ap。目前,我已设法提取跟踪器的API,并在我的Main.storyboard上将其作为好标签呈现。当我尝试运行我的应用程序时,我获得了最新的货币价值,但在几分钟后新数据无法刷新。我的问题是我如何每分钟左右刷新一次应用程序,因此用户始终可以使用货币值进行更新。

override func viewDidLoad() {
    super.viewDidLoad()

    getJSON { (usdPrice) -> Void in
        let usdPriceText = usdPrice.description
        self.bitcoinValue.stringValue = usdPriceText

        print(usdPrice)
    }
}

func getJSON(completion: (Double) -> Void) {
    let url = NSURL(string: baseURL)
    let request = NSURLRequest(URL: url!)
    let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
    let task = session.dataTaskWithRequest(request) { (data, response, error) -> Void in

        if error == nil{
            let swiftyJSON = JSON(data: data!)
            let usdPrice = swiftyJSON["bpi"]["USD"]["rate"].doubleValue
            completion(usdPrice)
        } else {
            print("There was an error!")
        }
    }

    task.resume()
    }




}

非常感谢

2 个答案:

答案 0 :(得分:3)

假设您每次加载视图控制器时都想从API中获取值(当应用程序启动时,当应用程序从后台恢复时),您应该从您的viewWillAppear方法中异步调用API方法查看控制器。每次要显示视图时都会调用viewWillAppear。您还可以查看其他视图生命周期方法,以确定何时是重新加载数据的最佳时间。

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    updateCurrencyDataAsync()   //Your API method call
}

答案 1 :(得分:1)

为了定期更新数据(如您所提到的每分钟),您可能希望使用NSTimer。它们允许您在每次经过指定的时间后运行函数。

let updateTimer = NSTimer.scheduledTimerWithTimeInterval(TIME_BETWEEN_CALLS, target: self, selector: Selector("FUNCTION"), userInfo: nil, repeats: true);
  • TIME_BETWEEN_CALLS表示调用更新功能之间的时间(以秒为单位)。

  • FUNCTION指定计时器要调用的函数。

  • 如果您想在某个时间停止自动更新,请致电updateTimer.invalidate()

Here's some more information about timers I found to be quite useful.