rangeOfString以CLPlacemark值失败

时间:2014-03-28 14:29:08

标签: ios objective-c

我试图检测地标值是否包含某些值。为此,我在NSString上使用rangeOfString方法。但是,rangeOfString可以像我期望的那样处理字符串,但不会对地标值的期望如何。我无法弄清楚为什么会这样。

以下是一个例子:

NSString *streetNumber = @"243-244";  //same value as the placemark.subThoroughfare
NSRange range1 = [streetNumber rangeOfString:@"-"];  //correctly identifies the range.location as 4
//placemark.subthoroughfare is 243-244
NSRange range2 = [placemark.subThoroughfare rangeOfString:@"-"];  //range.location = max int

如果您将模拟器位置设置为旧金山,则当前位置地标subthoroughfare包含" - "

有谁知道为什么会发生这种情况以及如何处理它?<​​/ p>

1 个答案:

答案 0 :(得分:1)

事实证明,安娜的建议是正确的。做一些检查我能够确定地标字符串不完全是ascii。为了解决这个问题,我首先将字符串转换为ascii:

NSData *asciiData = [placemark.subThoroughfare dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

NSString *streetNumber = [[NSString alloc] initWithData:asciiData encoding:NSASCIIStringEncoding];

新的streetNumber字符串现在可以正常使用rangeOfString方法。