在swift 2命令行工具(main.swift)中,我有以下内容:
import Foundation
print("yay")
var request = HTTPTask()
request.GET("http://www.stackoverflow.com", parameters: nil, completionHandler: {(response: HTTPResponse) in
if let err = response.error {
print("error: \(err.localizedDescription)")
return //also notify app of failure as needed
}
if let data = response.responseObject as? NSData {
let str = NSString(data: data, encoding: NSUTF8StringEncoding)
print("response: \(str)") //prints the HTML of the page
}
})
Run Code Online (Sandbox Code Playgroud)
控制台显示'yay'然后退出(程序以退出代码结束:0),似乎没有等待请求完成.我该如何防止这种情况发生?
代码使用swiftHTTP
我想我可能需要一个NSRunLoop,但没有一个快速的例子
我正在写一个库,所以不使用UIKit,即使在我的iOS应用程序中,相同的代码也可以工作,但是当我在命令行中执行时却没有.在PlayGround中也似乎有效.
由于某种原因,回调没有被触发,因此print语句没有执行.
internal class func post(request: URLRequest, responseCallback: @escaping (Bool, AnyObject?) -> ()) {
execTask(request: request, taskCallback: { (status, resp) -> Void in
responseCallback(status, resp)
})
}
internal class func clientURLRequest(url: URL, path: String, method: RequestMethod.RawValue, params: Dictionary<String, Any>? = nil) -> URLRequest {
var request = URLRequest(url: url)
request.httpMethod = method
do {
let jsonData = try JSONSerialization.data(withJSONObject: (params! as [String : Any]), options: .prettyPrinted)
request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
request.httpBody = jsonData
} catch let error as NSError { …Run Code Online (Sandbox Code Playgroud)