我有这个原始字符串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
我做错了什么?
答案 0 :(得分:2)
我做错了什么?
一切。不推荐使用addressDictionary
,在任何情况下都无需解码任何数据;地址信息已作为字符串发送给您。 (它不清楚" raw"字符串应该是什么;字符串是一个字符串。)你不能将字符串转换为ASCII,因为它可能(和这里)包含nonASCII字符。只需使用您给出的字符串。
CLPlacemark具有subthoroughfare
(门牌号码)和thoroughfare
(街道名称)等属性,或者如果您想要整个地址,请获取其postalAddress
格式使用CNPostalAddressFormatter(您需要导入Contacts框架)。