如何处理失败的可选绑定
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
我正在尝试从字符串创建新的 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