为什么我在Xcode命令行应用程序中没有收到来自URL请求的响应

时间:2019-03-03 15:38:02

标签: ios swift xcode macos

我在使用swift的Xcode中遇到问题。我试图在Swift中使用URL请求从网页获取数据。在dataTask的完成处理程序中,我尝试打印数据。在info.plist文件中启用任意加载后,这在可可应用程序中可以正常工作。但是,当我尝试在命令行应用程序中执行相同的操作时,似乎完成处理程序什么也不做。航站楼建成后甚至没有出现。有人可以告诉我我所缺少的吗?

2 个答案:

答案 0 :(得分:0)

创建一个信号量以阻止当前线程。等待URL会话结束。从完成处理程序发出信号量。

答案 1 :(得分:0)

您的命令行实用程序很可能很早就完成了。为避免这种情况,有几种不同的可能性。一种最常见的用法,它永远不会返回,并且应该“以编程方式”停止命令行实用程序

将其放入main.swift中并尝试:-)

import Foundation

print("----------- init request -----------")
DispatchQueue.main.async {
    if let url = URL(string: "https://code-maven.com/try/examples/html/hello_world_html5.html") {
        do {
            let contents = try String(contentsOf: url)
            print(contents)
        } catch {
            fatalError("contents could not be loaded")
        }
        exit(0)
    } else {
        fatalError("the URL was bad!")
    }
}
print("---------- continue execution ------")
dispatchMain()