我在这里有这个字符串:
let toEscape = "http://localhost:3000/api/Tests/update?where={ \"name\": \(updateText) }"
这个字符串通常没问题,除了我连接的API软件(Strongloop)似乎不喜欢\" name \"的反斜杠。如何逃避整个字符串,以便我不必在引号前放入反斜杠?在C#中,您可以在字符串的开头使用@符号,并且据说您可以在Objective-C中执行相同的操作,但我无法在Swift中执行此操作,至少到目前为止还没有。
答案 0 :(得分:2)
一种可能的解决方案是使用NSURL(scheme:host:path :)创建NSURL并调用absoluteString()方法
let escapedString = NSURL(scheme: "http", host: "localhost:3000", path: "/api/Tests/update?where={ \"name\": \(updateText) }")?.absoluteString
修改:
或者更容易
let escapedString = toEscape.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
答案 1 :(得分:1)
简短回答:是的,请参阅上面的答案,了解网址编码。
长答案:也许斜杠不是问题。使用\"
来转义双引号已经成为高级语言多年的标准,并且在Swift文档中被识别为正确的语法(上面的链接)。
我注意到的是你的查询参数(如果它应该是JSON)是错误的。您需要围绕插值的引号才能使其成为有效的JSON:
let toEscape = "...?where={ \"name\": \"\(updateText)\" }"
我没有Swift的经验,也没有Strongloop的经验,但我会先尝试引用updateText
并查看问题是否有所改变。