2016-11-18 85 views
1

在整个SO和在线上都有大量的细节。不幸的是,我无法用它来处理我的字符串。我有这个字符串如何用格式创建一个字符串?不在字符串上工作

https://maps.googleapis.com/maps/api/directions/json?origin=%@,%@&destination=%@,%@&sensor=false&units=metric&mode=driving 

和所有我想要做的是通过做

let url = String(format: Constants.GoogleDirectionsUrl, road.FromCoordinates.Latitude, road.FromCoordinates.Longitude, road.ToCoordinates.Latitude, road.ToCoordinates.Longitude) 

字符串插入必要的值到字符串虽然总是打印出作为

https://maps.googleapis.com/maps/api/directions/json?origin=(null),(null)&destination=(null),(null)&sensor=false&units=metric&mode=driving 

虽然所有的坐标都是有效的。当我做字符串插补我得到正确的价值展现出来

print("coord -- \(road.FromCoordinates.Latitude)") 

坐标 - 29.613929

我已经试过%L,%f和%@串都具有相同的结果英寸任何人看到我在这里做的不正确?

更新

对于其他人,这里是我落得这样做克服了以上。我遵循下面的答案,创建了一个类func,我在应用程序的全局类中有一个。这使我可以从任何地方调用它。下面是函数

class func createUrlDrivingDiretions (sLat: Double, sLon: Double, eLat: Double, eLon: Double) -> String { 
    return "https://maps.googleapis.com/maps/api/directions/json?origin=\(sLat),\(sLon)&destination=\(eLat),\(eLon)&sensor=false&units=metric&mode=driving" 
} 
+1

用这个问题中涉及的所有变量的声明和设置来更新你的问题。 – rmaddy

+0

编辑您的问题并正确提供所有信息 –

回答

3

你为什么不使用以下语法(使用SWIFT ...不是传统的OBJ-C编码):

let var1 = "xxx" 
let var2 = "yyy" 
let var3 = "zzz" 
let var4 = "www" 
let var5 = "kkk" 

let s = "https://maps.googleapis.com/maps/api/directions/json?origin=\(var1),\(var2)&destination=\(var4),\(var5)&sensor=false&units=metric&mode=driving" 

确保VAR1 ...... VAR5不可选的,否则你必须解开他们,否则你会得到这样的输出字符串:可选(XXX) ...而不是XXX

如果您需要特殊的格式使用NumberFormatter类(见本:Formatters

+0

不幸的是,这样的事情是行不通的。考虑到它会在很多地方使用,我没有考虑在课堂中包含这个URL。这将需要重复我通常避免的代码。 –

+0

因此,在这之后我创建了一个全局类中的函数,以便我可以从任何地方调用它。谢谢你的提示。 –

+0

不客气! – Sergiob