如何处理失败的可选绑定

How to handle failed Optional Binding

我正在尝试从字符串创建新的 URL 数据类型,returns 是可选的。当我尝试可选绑定时,缩进代码永远不会执行。

如何捕获可选绑定失败的错误或原因?

let newString = "http://somehost:1337/parse/classes/CompEntry?where={\"CompID\":{\"__type\":\"Pointer\",\"className\":\"Competition\",\"objectId\":\"CXy40U65Z9\"}}"
if let url = URL(string: newString) {
    print("here") // NEVER GETS EXECUTED
}

是不是因为字符串中的"转义字符?

您可以从如下字符串创建 url:

let newString = "http://somehost:1337/parse/classes/CompEntry"
if let url = URL(string: newString) {
     print("here")
}

然后创建一个参数字典,如:

 params = ["CompID": ["__type": "Pointer", "className": "Competition", "objectId": "CXy40U65Z9"]]

然后在 URLRequest 的 httpBody 中发送这些参数。

只需将 else 添加到 IF 控制流程

let newString = "http://somehost:1337/parse/classes/CompEntry?where={\"CompID\":{\"__type\":\"Pointer\",\"className\":\"Competition\",\"objectId\":\"CXy40U65Z9\"}}"
    if let url = URL(string: newString) {
        print("here") // NEVER GETS EXECUTED
    } else {
        print("here") // EXECUTED when optional binding fails
    }

更新: 作者预计会出现错误

URL 初始化程序在无法解析给定字符串的情况下不会抛出错误

This initializer returns nil if the string doesn’t represent a valid URL. For example, an empty string or one containing characters that are illegal in a URL produces nil. source