Swift 3预览2 linux错误:使用未parsing的标识符

在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的源代码:

https://github.com/apple/swift-corelibs-foundation/blob/93d0018a0891f876065651c3ee8c63f256a38de4/Foundation/NSURLSession/NSURLSession.swift#L200

你会看到调用sharedSession()返回NSUnimplemented()

在某些时候,URLSession会来到Linux – 但它还没有实现。

我相信原因是在OS X上,Swift的URLSession只是一个已经存在的Objective C实现的桥梁。 在Linux上,Foundation完全是在Swift中实现的,他们还没有到这里来重写。