如何自动更新应用 iOS 应用
How to auto-update app iOS app
所以我正在为 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()
}
}
非常感谢
假设您希望在每次加载视图控制器时(应用程序启动时,应用程序从后台恢复时)从 API 中获取值,您应该调用 API 方法从视图控制器上的 viewWillAppear 方法中异步调用。 viewWillAppear 会在每次视图即将显示时被调用。您还可以查看其他视图生命周期方法以确定何时是重新加载数据的最佳时间。
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
updateCurrencyDataAsync() //Your API method call
}
要定期更新数据(如您所述,每分钟更新一次),您需要使用 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.
所以我正在为 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()
}
}
非常感谢
假设您希望在每次加载视图控制器时(应用程序启动时,应用程序从后台恢复时)从 API 中获取值,您应该调用 API 方法从视图控制器上的 viewWillAppear 方法中异步调用。 viewWillAppear 会在每次视图即将显示时被调用。您还可以查看其他视图生命周期方法以确定何时是重新加载数据的最佳时间。
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
updateCurrencyDataAsync() //Your API method call
}
要定期更新数据(如您所述,每分钟更新一次),您需要使用 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.