我有以下代码,但NSURL不喜欢花括号。它崩溃了。如果我在&#34之后在字符串前加上一个@符号格式:"它什么都不做。如果我试图使用\来逃避括号,它就不起作用了。我如何使这项工作?
func getUrlWithUpdateText(updateText: String!) -> NSURL {
let escapedUpdateText = updateText.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!
let urlString = String(format: "http://localhost:3000/api/Tests/update?where={ \"name\": %@ }", escapedUpdateText)
let url = NSURL(string: urlString)
return url!
}
我意识到还有另一个类似的线程,但它并没有转化为这种情况,因为有一件事是Swift,而不是Objective-C。
答案 0 :(得分:1)
一旦构建完毕,就逃避一切:
func getUrlWithUpdateText(updateText: String) -> NSURL? {
let toEscape = "http://localhost:3000/api/Tests/update?where={ \"name\": \(updateText) }"
if let escapedUpdateText = toEscape.stringByAddingPercentEncodingWithAllowedCharacters(
NSCharacterSet.URLHostAllowedCharacterSet()),
url = NSURL(string: escapedUpdateText) {
return url
}
return nil
}
用法:
if let res = getUrlWithUpdateText("some text #%$") {
print(res)
} else {
// oops, something went wrong with the URL
}
答案 1 :(得分:0)
由于大括号位于URL中,您可以通过将大括号视为HTML实体来处理此问题。有关详细信息,请参阅How do I decode HTML entities in swift?。