Swift iOS最佳实践REST回调

时间:2015-01-02 11:38:44

标签: ios web-services uitableview swift asynchronous

My Swift iOS App与REST Web服务通信以检索JSON数据。 完成后,它将使用相应的UITableViewController刷新UITableView。

为了保持清洁,我创建了一个新的swift文件并将请求代码放在那里。

Interface.swift

import Foundation
class WTInterface {

func login() -> Bool {
    var token: String?
    println("login. initializing request...")
    var url = NSURL(string: "https://report.somewebservice/data.cgi")
    var request = NSMutableURLRequest(URL: url!)
    var session = NSURLSession.sharedSession()
    request.HTTPMethod = "POST"
    var params = [:]

    var requestBody = [
        "method" : "login",
        "params" : [
            "customerId": "235879840188032",
            "login": "foobar",
            "pass": "somepassowrd",
            "language": "en"
        ],
        "version" : "1.1"
    ]
    var err: NSError?
    request.HTTPBody = NSJSONSeri...............

的ViewController

import UIKit

class ViewController: UIViewController {


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.


    var wtinterface = WTInterface()


    wtinterface.login()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

问题是如何最好地刷新我的UITableView,因为这是一个异步请求。 我已经阅读了很多关于回调和闭包以及较旧的博客帖子和答案的内容,但我没有找到一个好的答案。 (主要是因为我认为现在的策略已经过时了......)

有人能指出我正确的方向并粘贴一些示例代码吗?

1 个答案:

答案 0 :(得分:0)

对于某些人来说可能有用:

答案是使用闭包。 请注意,(%i29)solve(cos(x)=0,x); solve: using arc-trig functions to get a solution. Some solutions will be lost. (%o29) [x=%pi/2] 表示闭包正在转义,即它没有"只是通过"但是可以例如等待像网络请求那样异步的东西。请注意,在使用它们时,UI不能在这些内部进行更新(因为它们不在平均线程上运行),而是在主线程上安排一些事情。

@escaping