2016-07-17 6 views
2

Aufbau meiner App auf Linux erhalte eine Fehlermeldung:Swift 3 Vorschau 2 Linux-Fehler: Verwendung von ungelöster Kennung

$ 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 

Es funktioniert in XCODE 8 auf meinem Mac. Ich versuche Swift auf Ubuntu:

$ swift --version 

Swift version 3.0 (swift-3.0-PREVIEW-2) 

Target: x86_64-unknown-linux-gnu 
+0

Anscheinend stimmt etwas nicht; ohne deinen Code zu sehen, der darüber ist. –

+1

I * denke * das Umbenennen des NS-Präfixes wurde für Linux noch nicht durchgeführt, d. H. Es wäre immer noch "NSURLSession". –

+0

Sie möchten vielleicht in diesem swifty Wrapper um IBM libcurl https://github.com/dmcyk/SwiftyCurl/ – johndpope

Antwort

1

Zwei Fragen:

1: Unter Linux sogar bis zu 3,0-PREVIEW-2 hat der "NS" Präfix nicht in fallen gelassen worden Gründung noch. Sie müssen immer noch NSURLSession anstelle von URLSession verwenden. Dies wird sich in Foundation mit 3.0-PREVIEW-3 basierend auf den GitHub-Zweigen ändern.

2: Und das ist ein Showstopper, URLSession/NSURLSession funktioniert nicht unter Linux. Es wurde noch nicht implementiert. Wenn Sie sich den Quellcode für URLSession sehen jetzt:

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

Sie werden sehen, dass sharedSession() kehrt NSUnimplemented()

Irgendwann ruft, wird URLSession zu Linux kommen - aber es war nicht implementiert noch.

Ich glaube der Grund ist, dass URLSession für Swift auf OS X einfach eine Brücke zur Objective-C-Implementierung war, die es bereits gab. Unter Linux wird Foundation komplett in Swift implementiert und sie haben es einfach noch nicht geschafft, dies neu zu schreiben.