Mar*_*oon 8 ios google-places-api swift3
我正在使用适用于iOS的Google Places API,可以成功检索附近的地点并将地址显示为字符串.我要做的是提取地址组件,如城市,以存储在数据库中.
文档表明GMSPlace有一个addressComponents属性(一个数组),但我似乎无法想象如何使用这个属性.
下面的代码提供了整个地址到标签的文本,但我不能超越:
编辑----添加了代码,显示我正在尝试访问地址组件
venueLabel.isHidden = false
venueLabel.text = selectedPlace?.name
addressLabel.isHidden = false
addressLabel.text = selectedPlace?.formattedAddress
let addressComponents = selectedPlace?.addressComponents
for component in addressComponents! {
let city = component["city"] //Error Type GMSPaceAddressComponent has no subscript members
print(city)
}
Run Code Online (Sandbox Code Playgroud)
Sur*_*put 11
一个安全的Swift 4.2解决方案:
let name = place.addressComponents?.first(where: { $0.type == "city" })?.name
Run Code Online (Sandbox Code Playgroud)
selectedPlace.addressComponents是一个GMSAddressComponent数组,它有2个属性类型和名称.在你的情况下它会是这样的
for component in addressComponents! {
if component.type == "city" {
print(component.name)
}
}
Run Code Online (Sandbox Code Playgroud)
GMSAddressComponent是一个类,而不是您收到此错误的字典或数组.
可以从链接引用其他组件类型.
对于最新的 Google Places API(2019 年 7 月),这可以为您提供帮助。实际上,谷歌现在为每个元素添加了几种类型。因此“type”现在已被弃用,“types”是新提交的。
你可以这样做:
for addressComponent in (self.mySelectedPlace?.addressComponents)! {
for type in (addressComponent.types){
switch(type){
case "country":
var country = addressComponent.name
case "postal_code":
var postCode = addressComponent.name
default:
break
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7046 次 |
| 最近记录: |