斯威夫特 - 休息Api进展

时间:2015-09-15 21:41:52

标签: swift api resources request alamofire

我在服务器端有一个基本的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的进度方法,但我不确定它是否均匀可以在我现有的应用程序结构中包含此进度条。

如果有人可以分享他的知识,那就太好了。

谢谢和问候!

0 个答案:

没有答案