首页 > 解决方案 > 当使用 init 传递字符串的有效 url 时,URL(string: urlString) 返回 nil。怎么修?

问题描述

当使用 init 传递字符串的有效 url 时,URL(string: urlString) 返回 nil。怎么修?当我从一个词(例如,莫斯科)输入一个值时,一切正常,当输入一个来自两个词的城市时,我使用 split(separator: " ") 分隔请求并使用 .joined(separator: "%20" ) 并将城市除以 %20 并返回 nil。如何解决这个问题?

在此处输入图像描述

在此处输入图像描述

标签: iosswiftiphonexcode

解决方案


你需要addingPercentEncoding看看我的扩展

extension String {
    var url: URL? {
        guard !isEmpty else { return nil }

        if let url = URL(string: self) {
            return url
        } else if let urlEscapedString = addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed),
                 let escapedURL = URL(string: urlEscapedString) {
            return escapedURL
        }
        return nil
    }
}

推荐阅读