在Linux上构build我的应用程序出错:
$ swift build Compile Swift Module 'finder' (1 sources) main.swift:24:15: error: use of unresolved identifier 'URLSession' let session = URLSession.shared
$ swiftc main.swift main.swift:24:15: error: use of unresolved identifier 'URLSession' let session = URLSession.shared
它在我的Mac上的XCODE 8中工作。 我在Ubuntu上尝试Swift:
$ swift --version Swift version 3.0 (swift-3.0-PREVIEW-2) Target: x86_64-unknown-linux-gnu
两个问题:
1:在Linux上,甚至高达3.0-PREVIEW-2,“NS”前缀在Foundation中还没有被删除。 你仍然需要使用NSURLSession,而不是URLSession。 这将基于基于GitHub分支的3.0-PREVIEW-3而改变。
2:这是一个showstopper,URLSession / NSURLSession在Linux上不起作用。 它还没有实施。 如果您现在查看URLSession的源代码:
你会看到调用sharedSession()
返回NSUnimplemented()
在某些时候,URLSession会来到Linux – 但它还没有实现。
我相信原因是在OS X上,Swift的URLSession只是一个已经存在的Objective C实现的桥梁。 在Linux上,Foundation完全是在Swift中实现的,他们还没有到这里来重写。