Ios 如何在没有反斜杠的情况下转义整个字符串?

Ios 如何在没有反斜杠的情况下转义整个字符串?,ios,swift,api,strongloop,Ios,Swift,Api,Strongloop,我这里有这个字符串: let toEscape = "http://localhost:3000/api/Tests/update?where={ \"name\": \(updateText) }" 这个字符串通常很好,只是我连接的API软件(Strongloop)似乎不喜欢“name”处的反斜杠。如何转义整个字符串,以便不必在引号前加反斜杠?在C#中,可以在字符串开头使用@符号,在Objective-C中也可以使用@符号,但我在Swift中无法做到这一点,至少到目前为止是这样。一个可能的解

我这里有这个字符串:

let toEscape = "http://localhost:3000/api/Tests/update?where={ \"name\": \(updateText) }"

这个字符串通常很好,只是我连接的API软件(Strongloop)似乎不喜欢“name”处的反斜杠。如何转义整个字符串,以便不必在引号前加反斜杠?在C#中,可以在字符串开头使用@符号,在Objective-C中也可以使用@符号,但我在Swift中无法做到这一点,至少到目前为止是这样。

一个可能的解决方案是使用NSURL(scheme:host:path:)创建一个NSURL并调用absoluteString()方法

编辑:

还是更容易

let escapedString = toEscape.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)

简短回答:是的,请参阅上面的URL编码答案

长答案:也许斜杠不是问题所在。使用
\“
来转义双引号多年来一直是高级语言的标准,在Swift文档中被认为是正确的语法(上面的链接)

我注意到的是,如果您的查询参数应该是JSON,那么它的格式是错误的。您需要在插值周围加引号,才能使其成为有效的JSON:

let toEscape = "...?where={ \"name\": \"\(updateText)\" }"

我在Swift方面没有任何经验,在Strongloop方面也没有任何经验,但我会先尝试引用
updateText
,看看问题是否会改变。

这肯定回答了在发送请求时如何转义整个url字符串的问题。现在这已经成为一个Strongloop问题,因为它仍然不喜欢该请求出于某些原因。这一点很好。这可能也会解决它。我发现Strongloop提供了另一种编写URL的方法,使用[where][name]=(updateText)而不是JSON。
let toEscape = "...?where={ \"name\": \"\(updateText)\" }"