相关疑难解决方法(0)

如何防止命令行工具在异步操作完成之前退出

在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,但没有一个快速的例子

xcode swift2 xcode7-beta4

27
推荐指数
6
解决办法
7103
查看次数

Swift 3,没有调用URLSession dataTask completionHandler

我正在写一个库,所以不使用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)

nsurlsession swift3

6
推荐指数
3
解决办法
5万
查看次数

标签 统计

nsurlsession ×1

swift2 ×1

swift3 ×1

xcode ×1

xcode7-beta4 ×1