如何转换 JSON 以在 Swift 中使用 CLLocationCoordinate2D
How can I convert JSON to work with CLLocationCoordinate2D in Swift
我使用了 Web 服务并将 JSON 数据保存到我的 jsonArray 中。现在我正在尝试将数据应用到 CLLocationCoordinate2D 中,如下所示:
CLLocationCoordinate2D(latitude: self.jsonArray["JSONResults"][0]["lat"],longitude: self.jsonArray["JSONResults"][0]["long"])
Swift 编译器告诉我:
Cannot invoke initializer for type 'CLLocationCoordinate2D' with an argument list of type (latitude: JSON, longitude: JSON)
我试过使用 as Int,但还是不行。我怎样才能正确地转换它?
我的 JSON 数据示例:
{
"long" : "121.513358",
"tel" : "(02)2331-6960",
"lat" : "25.044976",
"add" : "xxx",
"region" : "yyy",
"name" : "zzz"
}
您似乎正在使用库 SwiftyJSON 来解码您的 JSON。
此库创建 JSON
类型的对象,您必须在使用它之前提取它们的值。
由于您在响应中的值似乎是 String
s 而您需要 Double
s 来表示 CLLocationCoordinate2D
,这应该有效:
let lat = self.jsonArray["JSONResults"][0]["lat"].stringValue
let long = self.jsonArray["JSONResults"][0]["long"].stringValue
CLLocationCoordinate2D(latitude: Double(lat)!, longitude: Double(long)!)
在此示例中,我使用了 SwiftyJSON 非可选吸气剂 stringValue
。但是你也可以使用可选的 getters .string
如果值可以是 nil:
if let lat = self.jsonArray["JSONResults"][0]["lat"].string, let long = self.jsonArray["JSONResults"][0]["long"].string, let latitude = Double(lat), let longitude = Double(long) {
CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
}
我使用了 Web 服务并将 JSON 数据保存到我的 jsonArray 中。现在我正在尝试将数据应用到 CLLocationCoordinate2D 中,如下所示:
CLLocationCoordinate2D(latitude: self.jsonArray["JSONResults"][0]["lat"],longitude: self.jsonArray["JSONResults"][0]["long"])
Swift 编译器告诉我:
Cannot invoke initializer for type 'CLLocationCoordinate2D' with an argument list of type (latitude: JSON, longitude: JSON)
我试过使用 as Int,但还是不行。我怎样才能正确地转换它?
我的 JSON 数据示例:
{
"long" : "121.513358",
"tel" : "(02)2331-6960",
"lat" : "25.044976",
"add" : "xxx",
"region" : "yyy",
"name" : "zzz"
}
您似乎正在使用库 SwiftyJSON 来解码您的 JSON。
此库创建 JSON
类型的对象,您必须在使用它之前提取它们的值。
由于您在响应中的值似乎是 String
s 而您需要 Double
s 来表示 CLLocationCoordinate2D
,这应该有效:
let lat = self.jsonArray["JSONResults"][0]["lat"].stringValue
let long = self.jsonArray["JSONResults"][0]["long"].stringValue
CLLocationCoordinate2D(latitude: Double(lat)!, longitude: Double(long)!)
在此示例中,我使用了 SwiftyJSON 非可选吸气剂 stringValue
。但是你也可以使用可选的 getters .string
如果值可以是 nil:
if let lat = self.jsonArray["JSONResults"][0]["lat"].string, let long = self.jsonArray["JSONResults"][0]["long"].string, let latitude = Double(lat), let longitude = Double(long) {
CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
}