在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"])")