У меня возникла проблема с инициализатором строки URL-адреса структуры Foundation. Я отправлю код из ответа ниже:

Welcome to Apple Swift version 5.1 (swiftlang-1100.0.270.13 clang-1100.0.33.7).
Type :help for assistance.
  1> import Foundation
  2> let testString = "https://www.apple.com"
testString: String = "https://www.apple.com"
  3> let testUrl1 = URL(string: testString)
testUrl1: URL? = nil
  4> let testUrl2 = URL(string: "https://www.apple.com")
testUrl2: URL? = nil

Я не могу понять, почему это происходит, если вы посмотрите на источник инициализатора, расположенный по адресу https://github.com/apple/swift-corelibs-foundation/blob/master/Foundation/URL.swift#L495 вы увидите это в документации :

/// Initialize with string.
///
/// Returns `nil` if a `URL` cannot be formed with the string (for example, if the string contains characters that are illegal in a URL, or is an empty string).

Насколько я могу судить, строка, с которой я тестирую, является действительным URL-адресом, и инициализатор не должен возвращать nil. Я пробовал это на двух разных компьютерах Mac и на недавно установленной виртуальной машине и получил одинаковый результат на всех из них. macOS 10.15, Xcode 11.1. Кто-нибудь знает, что может быть не так?

3
Adam M. 9 Окт 2019 в 02:01

1 ответ

Лучший ответ

Похоже, это проблема REPL, которая также существовала в 11.0. Но если вы print(testUrl1), вы увидите, что он действительно настроен.

4
Rob 9 Окт 2019 в 00:50