Как я могу использовать тип URLRequest Foundation в Linux? - PullRequest
0 голосов
/ 28 октября 2019

Когда я пытаюсь использовать struct URLRequest из Foundation , я получаю сообщение об ошибке при компиляции с swift 5.1.1. Тот же код отлично работает с swift 5.0.1.

Пример: данный файл Foo.swift с содержимым

import Foundation
print(URLRequest.self)

С Swift 5.0.1 мы получаем

$ docker run --rm -v "$PWD:/app" swift:5.0.1 sh -c \
     'swiftc /app/Foo.swift && ./Foo'
URLRequest

Но с 5.1.1

$ docker run --rm -v "$PWD:/app" swift:5.1.1 sh -c \
     'swiftc /app/Foo.swift && ./Foo
Foo.swift:2:7: error: use of unresolved identifier 'URLRequest'
print(URLRequest.self)
      ^~~~~~~~~~

я не могу найти ничего, что упоминало бы соответствующие изменения в Foundation, и исходный код на https://github.com/apple/swift-corelibs-foundation также выглядит стабильным.

Что здесь происходит, и есть ли обходной путь для этого?

1 Ответ

1 голос
/ 29 октября 2019

Это вызвано недавним перемещением сетевых объектов, связанных с *1001*, в новый модуль FoundationNetworking . Новый модуль не существует в Дарвине, поэтому необходимо использовать команды препроцессора, чтобы код работал на всех поддерживаемых платформах:

import Foundation
#if canImport(FoundationNetworking)
import FoundationNetworking
#endif

print(URLRequest.self)

Этот код прекрасно работает с обеими командами докера, приведенными выше.

...