在Swift中执行println字典项时,转义字典键双引号

CjC*_*oax 35 println swift

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

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

println("current locaition is \(locations["current"])")
Run Code Online (Sandbox Code Playgroud)

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

我试图逃避它,\但这不是正确的方法.

感谢任何帮助.

Log*_*gan 42

Xcode 7.1+

从Xcode 7.1 beta 2开始,我们现在可以在字符串文字中使用引号.从发行说明:

以字符串形式插入的表达式现在可以包含字符串文字.例如,"我的名字是(attributes ["name"]!)"现在是一个有效的表达式.(14050788)

Xcode <7.1

我不认为你能这样做.

来自文档

您在插值字符串中的括号内写的表达式不能包含未转义的双引号(")或反斜杠(\),并且不能包含回车符或换行符.

你必须使用

let someVar = dict["key"]
println("Some words \(someVar)")
Run Code Online (Sandbox Code Playgroud)

  • 为什么有人会对此进行投票?你不能做你想做的事,这不是我的错,而且我直接引用了文档? (5认同)

Tom*_*ina 10

您可以使用字符串连接而不是插值:

println("Some words " + dict["key"]! + " some more words.")
Run Code Online (Sandbox Code Playgroud)

请注意+标志周围的空间.

更新:

您可以做的另一件事是使用字符串格式说明符,就像在Objective-c天中完成它一样:

println( String(format: "Some words %@ some more words", dict["1"]!) )
Run Code Online (Sandbox Code Playgroud)