如何在Swift的其他类上为HTTP请求创建函数?

时间:2018-01-09 17:54:18

标签: ios swift xcode http

我正在编写一个应用程序来使用SwiftHTTP发出http请求,但我想创建一个类来实现这一点,而在ViewController中我调用函数来执行此操作。所以,我创建了一个UIButton来调用函数。

我不知道我是否需要使用线程或存在使这一点变得简单的方法。

ViewController.swift

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var button: UIButton!
@IBOutlet weak var label: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

    button.addTarget(self,action:#selector(self.clickRequest(sender:)), for: UIControlEvents.touchUpInside )        
}

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

@objc func clickRequest (sender: UIButton) {

}

}

HTTPService.swift

import Foundation
import SwiftHTTP

class HTTPService {



}

我如何在其他应用中制作此内容。但是在ViewController.swift里面。

HTTP.GET("https://www.host.com/example",requestSerializer: JSONParameterSerializer()) {
                response in
                if let err = response.error {
                    print(err.localizedDescription)
                    return
                }


                } catch let err as NSError {
                    print(err)
                }
            }

1 个答案:

答案 0 :(得分:1)

HTTPService服务类中创建一个包含 successBlock failureBlock 的方法,如下所示

class HTTPService {

func makeRequest(params: [String: Any], successBlock: () -> Void, failureBlock: () -> Void) {
    HTTP.GET("https://www.host.com/example",requestSerializer: JSONParameterSerializer()) {
        response in
        if let err = response.error {
           print(err.localizedDescription)
           failureBlock() // Call failure block
           return
        } else {
           successBlock() // Call success block
        }
    } catch let err as NSError {
        print(err)
        failureBlock() // Call failure block
    }
}

}

你可以像下面这样调用这个方法,

@objc func clickRequest (sender: UIButton) {
     HTTPService().makeRequest(params:  ["name": "userName"], successBlock: {
        // Handle API success here. E.g Reloading table view
     }) {
        // Handle API failure here. E.g Showing error to user
     }
}

由于