如何在NSURL字符串中包含花括号?

我有以下代码,但NSURL不喜欢花括号。 它崩溃了。 如果我在“格式:”后面的字符串前加一个@符号,它什么都不做。 如果我尝试使用\来逃避括号,它不起作用。 我该如何工作?

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。

一旦构造完毕,就逃避一切:

 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 } 

由于大括号位于URL中,您可以通过将大括号视为HTML实体来处理此问题。 请参阅如何在swift中解码HTML实体? 了解更多信息。