Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 4将字符串更改为URL_Swift_String_Url - Fatal编程技术网

Swift 4将字符串更改为URL

Swift 4将字符串更改为URL,swift,string,url,Swift,String,Url,我对斯威夫特还是个新手,但我什么都试过了,但都没能成功 var itemValue: String! var itemURL: URL! override func viewDidLoad() { super.viewDidLoad() print("itemValue is", itemValue!) guard let itemURL = URL(string: itemValue) else { return } itemURL没有获取

我对斯威夫特还是个新手,但我什么都试过了,但都没能成功

var itemValue: String!
var itemURL: URL!

override func viewDidLoad() {
    super.viewDidLoad()

    print("itemValue is", itemValue!)
    guard let itemURL = URL(string: itemValue) else {
        return
    }
itemURL没有获取值,即使我已经验证了itemValue字符串设置正确(在以前的vc中,准备segue)

尝试把你的URL字符串放在这段代码中,我希望它能为你工作


尝试将URL字符串放入此代码中,我希望它能对您起作用。

当您编写
guard let itemURL=URL(string:itemValue)
时,您将创建一个名为itemURL的新局部常量,该常量与同名的全局变量无关。此外,这个新的局部常数与全局变量的类型不同。全局变量是隐式展开的可选变量,因此这是可选的,但局部常量不是可选的


这就是为什么您说itemURL没有得到一个值:您希望名为itemURL的全局变量得到一个值,但只为具有相同名称的局部常量设置一个值。这两个相似的标识符不会将其内容存储在相同的内存位置。

当您编写
guard let itemURL=URL(string:itemValue)
时,您将创建一个新的局部常量名为itemURL,该常量与同名的全局变量无关。此外,这个新的局部常数与全局变量的类型不同。全局变量是隐式展开的可选变量,因此这是可选的,但局部常量不是可选的


这就是为什么您说itemURL没有得到一个值:您希望名为itemURL的全局变量得到一个值,但只为具有相同名称的局部常量设置一个值。这两个相似的标识符不会将它们的内容存储在同一个内存位置。

您能在这里添加url字符串吗?关键是,并非每个字符串都是有效的url。所以
itemValue
很容易成为其中之一。它只是一个URL,类似于。这是一个有效的URL,我不在乎它是什么“样子”。您需要告诉我们它是什么。此外,字符串
website.com
不是有效的URL,这是一个主机名。包含主机名的有效URL必须以非空的scheme组件开头,后跟冒号(请参阅规范)。某些浏览器允许您为其提供主机名,您应该在其中提供URL,但这并不意味着这是一个有效的URL。您可以在此处添加URL字符串吗?关键是,并非每个字符串都是有效的URL。所以
itemValue
很容易成为其中之一。它只是一个URL,类似于。这是一个有效的URL,我不在乎它是什么“样子”。您需要告诉我们它是什么。此外,字符串
website.com
不是有效的URL,这是一个主机名。包含主机名的有效URL必须以非空的scheme组件开头,后跟冒号(请参阅规范)。有些浏览器允许你给他们一个主机名,你应该给他们一个URL,但这并不意味着这是一个有效的URL。非常感谢你的解释。我真不敢相信我错过了。我删除了全局变量,但仍然没有在itemURL中获取值。添加
print(“content:”,itemURL)
viewDidLoad()
的末尾,您将看到在itemURL中获取值。如果没有,请给出完整的代码,因为对于您在问题中编写的代码片段,您必须在itemURL中获得一个值。非常感谢您的解释。我真不敢相信我错过了。我删除了全局变量,但仍然没有在itemURL中获取值。添加
print(“content:”,itemURL)
viewDidLoad()
的末尾,您将看到在itemURL中获取值。如果没有,请给出完整的代码,因为对于您在问题中编写的代码段,您必须在itemURL中获得一个值。
let url : String = "url string here"
let urlStr : String = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
let convertedURL : URL = URL(string: urlStr)!
print(convertedURL)