我是新手,但是我已经尝试了所有方法,但无法正常工作。
var itemValue: String!
var itemURL: URL!
override func viewDidLoad() {
super.viewDidLoad()
print("itemValue is", itemValue!)
guard let itemURL = URL(string: itemValue) else {
return
}
即使我已验证itemValue字符串设置正确(在以前的vc中,准备进行segue验证),itemURL也没有获取值。
答案 0 :(得分:1)
在编写guard let itemURL = URL(string: itemValue)
时,您将创建一个名为itemURL的新局部常量,它与具有相同名称的全局变量无关。此外,此新的局部常量与全局变量的类型不同。全局变量是一个隐式解包的可选变量,因此这是可选变量,而局部常量不是可选变量。
这就是为什么您说 itemURL没有获得值的原因:您希望名为itemURL的全局变量获得一个值,但只将一个值设置为具有相同名称的局部常量。这两个相似的标识符不会将其内容存储在相同的存储位置。
答案 1 :(得分:0)
let url : String = "url string here"
let urlStr : String = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
let convertedURL : URL = URL(string: urlStr)!
print(convertedURL)
尝试将您的URL字符串放入此代码中,希望它对您有用。