我在服务器端有一个基本的API,这是我的Swift-App所要求的。
现在我可以从API加载资源并显示数据:
function events() {
var timer = null;
events.on('cancel', function() {
clearTimeout(timer);
});
function polling() {
//Get some data
events.emit('data', data);
timer = setTimeout(polling, 1000);
}
polling();
}
这是我的RestApiManager。
在我的TableViewController中调用此管理器来检索数据:
import Foundation
import SwiftyJSON
import Alamofire
class RestApiManager {
var resources: JSON = [
"resources": [
"articles": [],
"categories": []
],
]
let apiUrl: String
let apiUsername: String
let apiPassword: String
var resourceToBeCalled: String = ""
init(apiUrl: String, apiUsername: String, apiPassword: String) {
self.apiUrl = apiUrl
self.apiUsername = apiUsername
self.apiPassword = apiPassword
requestArticleResource()
requestCategegoryResource()
}
// Article Resource
func requestArticleResource() {
self.resourceToBeCalled = "articles"
getArticleResource() { responseObject, error in
let articleResource = JSON(responseObject!)
self.resources["resources"]["articles"] = articleResource
}
}
func getArticleResource(completion: (responseObject: NSDictionary?, error: NSError?) -> ()) {
collectDataFromApi() { responseObject, error in
completion(responseObject: responseObject, error: error)
}
}
// Category Resource
func requestCategegoryResource() {
self.resourceToBeCalled = "categories"
getCategoryResorce() { responseObject, error in
let categoryResource = JSON(responseObject!)
self.resources["resources"]["categories"] = categoryResource
}
}
func getCategoryResorce(completion: (responseObject: NSDictionary?, error: NSError?) -> ()) {
collectDataFromApi() { responseObject, error in
completion(responseObject: responseObject, error: error)
}
}
// COLLECT DATA METHOD
func collectDataFromApi(completionHandler: (responseObject: NSDictionary?, error: NSError?) -> ()) {
prepareHttpRequest(completionHandler)
}
// PREPARE HTTP REQUEST METHOD
func prepareHttpRequest(completionHandler: (responseObject: NSDictionary?, error: NSError?) -> ()) {
let alamofireRequest = Alamofire.request(.GET, "\(self.apiUrl)" + "/api/" + "\(self.resourceToBeCalled)")
alamofireRequest.authenticate(user: self.apiUsername, password: self.apiPassword)
alamofireRequest.responseJSON { request, response, responseObject, error in
completionHandler(responseObject: responseObject as? NSDictionary, error: error)
}
}
func getData() -> JSON {
return self.resources
}
}
在这个TableViewController中,我刚创建了一个类的实例(RestApiManager),并等待10秒钟让数据从API加载。
这很脏。
这就是为什么我想在显示器中包含一个进度条显示进度表,我已经知道进度条是如何工作的,我已经访问了Alamofire的进度方法,但我不确定它是否均匀可以在我现有的应用程序结构中包含此进度条。
如果有人可以分享他的知识,那就太好了。
谢谢和问候!