2016-07-17 2 views
2

Создание моего приложения на Linux получаю сообщение об ошибке:Swift 3 Предварительный просмотр 2 ошибка Linux: использование неразрешенного идентификатора

$ 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 

Он работает в Xcode 8 на моем Mac. Пытаюсь Swift на Ubuntu:

$ swift --version 

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

Target: x86_64-unknown-linux-gnu 
+0

Видимо, что-то не так; не видя свой код. –

+1

Я * думаю * переименование «Drop the NS prefix» еще не было сделано для Linux, т. Е. Все равно будет «NSURLSession». –

+0

, возможно, вам понравится эта небольшая обертка вокруг IBM libcurl https://github.com/dmcyk/SwiftyCurl/ – johndpope

ответ

1

Два вопроса:

1: В Linux, даже до 3,0-PREVIEW-2, приставка "NS" не уронили в Фонд еще. Вам все равно нужно использовать NSURLSession, а не URLSession. Это изменится в Foundation с 3.0-PREVIEW-3 на основе филиалов GitHub.

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 URLSession для Swift просто является мостом для реализации Objective C, которая уже существует. В Linux Фонд полностью внедряется в Swift, и у них просто нет возможности переписать его еще.

Смежные вопросы