2017-05-22 97 views
0

我正在使用适用于iOS的Google Places API,并且可以成功检索附近的地点并将地址呈现为字符串。我想要做的是提取诸如城市之类的地址组件以存储在数据库中。如何从GMSPlace地址组件中提取街道,城市等

该文档表明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) 
      } 
+0

份额完整的代码,请。 –

+0

API文档中提到了所有“addressComponents”的细节。看到这个https://developers.google.com/places/ios-api/reference/interface_g_m_s_place.html#ae0c1f39cee593fcf0909bcdf16ae2761 – Bilal

+0

@Shabirjan刚刚编辑与附加代码 –

回答

2

selectedPlace.addressComponents是GMSAddressComponent的阵列,其具有2个属性的类型和名称。 在你区分它会像

for component in addressComponents! { 
    if component.type == "city" { 
    print(component.name) 
    } 
    } 

GMSAddressComponent是一类不是字典或数组这就是你得到这个错误。

其他元件类型可从link中查询。

+0

谢谢。现在它非常有意义。干杯! –

0

我找不到这对任何地方的Objective-C,对于那些谁跟着我后面:

for (int i = 0; i < [place.addressComponents count]; i++) 
{ 
    NSLog(@"name %@ = type %@", place.addressComponents[i].name, place.addressComponents[i].type); 
} 
0
for (GMSAddressComponent * component in place.addressComponents) { 
    if ([component.type isEqual: @"locality"]) 
    { 
     NSLog(@"Current city %@ ", component.name); 
    } 
} 
+0

尽管这段代码可能会回答这个问题,但提供关于为什么和/或代码如何回答问题的其他内容可以提高其长期价值。 –

+0

请解释您的代码为何解决问题。仅有代码的答案对社区没有用处。 – JimHawkins

相关问题