在Swift中执行println字典项目时使用escape字典键双引号

我一直在玩Swift,刚刚遇到一个问题。 我有以下字典:

var locations:Dictionary<String,CLLocationCoordinate2D> = ["current":CLLocationCoordinate2D(latitude: lat, longitude: lng) ]; println("current locaition is \(locations["current"])") 

但编译器抱怨current代表我的字典中的一个键的双引号。

我尝试用\逃脱它,但它不是正确的方式。

感谢任何帮助。

Xcode 7.1+

由于Xcode 7.1 beta 2,我们现在可以在string中使用引号。 从发行说明:

用string插入的expression式现在可以包含string文字。 例如,“我的名字是(attributes [”name“]!)”现在是一个有效的expression式。 (14050788)

Xcode <7.1

我不认为你可以这样做。

从文档

您在插入string中括号内写入的expression式不能包含未转义的双引号(“)或反斜线(\),并且不能包含回车符或换行符。

你必须使用

 let someVar = dict["key"] println("Some words \(someVar)") 

您可以使用string连接而不是插值:

 println("Some words " + dict["key"]! + " some more words.") 

只要介意+符号周围的空间。

更新:

你可以做的另一件事就是使用string格式说明符 ,就像在Objective-C中完成的那样:

 println( String(format: "Some words %@ some more words", dict["1"]!) ) 

我也有插入string的这个问题。 我发现最好的解决办法就是把它分成两行:

 let location = locations["current"] println("current locaition is \(location)") 

这可能是Swift的一个bug。 从我在文档中find的内容中,您应该可以使用“\”来转义引号。

Swift不接受\()中的引号。 因此,您需要将单行代码分成两部分。

这里是一个博客,展示中国读者的例子: http : //tw.gigacircle.com/321945-1

从Swift 2.1开始,你可以在插值时使用双引号。 println("current location is \(locations["current"])")