-1

我有这个原始字符串101\U2013113 W 4th St

应该读哪个101-113 W 4th St

该字符串来自CLPlacemark

placemark.addressDictionary[@"Street"]

但是,当我使用以下方法对其进行解码时:

NSData *decode = [placemark.addressDictionary[@"Street"] dataUsingEncoding:NSUnicodeStringEncoding allowLossyConversion:YES];
NSString * address =  [[NSString alloc] initWithData:decode encoding:NSASCIIStringEncoding];

它在字符串的开头输出一些额外的字符,我无法在此处粘贴,但 NSLog 显示"\U00ff\U00fe101\^S 113 W 4th St Chattanooga TN 37402";

如果我NSLog是地标,它应该读起来101-113 W 4th St

我究竟做错了什么?

4

1 回答 1

2

我究竟做错了什么?

一切。addressDictionary已弃用,在任何情况下都无需解码任何数据;地址信息已经以字符串形式提供给您。(不清楚“原始”字符串应该是什么;字符串就是字符串。)您不能将字符串转换为 ASCII,因为它可能(并且在这里)包含非 ASCII 字符。只需使用您提供的字符串。

CLPlacemark 具有诸如subthoroughfare(门牌号)和thoroughfare(街道名称)之类的属性,或者如果您希望将地址作为一个整体,则postalAddress使用 CNPostalAddressFormatter 获取其和格式(您需要导入联系人框架)。

于 2018-03-02T21:59:47.477 回答