我从CLPlacemark下载了地址字典,我没有收到任何错误或其他任何内容,但这些密钥似乎与Apple文档显示的内容不一致。
来自CLPlacemark类:
// address dictionary properties
var name: String! { get } // eg. Apple Inc.
var thoroughfare: String! { get } // street address, eg. 1 Infinite Loop
var subThoroughfare: String! { get } // eg. 1
...
但是当我得到placemark.name时,它会返回街道地址,例如。 1无限循环。当我得到placemark.thoroughfare它只返回街道名称,而不是它看起来应该的数字。 placemark.subThoroughfare确实包含了建筑物编号,所以目前我只是连接subThoroughfare和通道但是我担心如果placemark.thoroughfare返回数字和街道名称我偶尔会偶尔获得两个建筑物编号
这是一个错误还是什么,我能指望像这样连接字符串吗?
答案 0 :(得分:4)
在我看来,这些评论中的错误。阅读the documentation表示thoroughfare
只会返回街道名称,如您所说:
街道地址包含街道名称。例如,如果地标位置是Apple的总部,则此属性的值将为字符串“Infinite Loop”。
在subThoroughfare
下阅读相同的文档,看起来你也就是这样:
子通道提供诸如该位置的街道号码之类的信息。例如,如果地标位置是Apple的总部(1 Infinite Loop),则此属性的值将为字符串“1”。
至于name
,这只是系统对地标的名称。对于某些地方,它只是地址。对于其他系统有更多信息的人,我相信它会更加用户友好(“沃尔玛”,“堆叠交换办公室”等)
但是,您的意图似乎只是获取地标的地址。为此,我将使用addressDictionary
属性并让系统(即ABCreateStringWithAddressDictionary
)处理令人讨厌的部分:
address = ABCreateStringWithAddressDictionary(myPlacemark.addressDictionary, false);
请注意,我相信这会给你系统的最佳解释,它可能包括城市,州,邮政等。