我正在尝试检测地标值是否包含某些值。为此,我在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包含“-”
有谁知道为什么会这样以及您将如何处理?
最佳答案
事实证明,安娜的建议是正确的。经过一些检查,我能够确定地标字符串不完全是ascii。要解决此问题,我首先将字符串转换为ascii:
NSData *asciiData = [placemark.subThoroughfare dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *streetNumber = [[NSString alloc] initWithData:asciiData encoding:NSASCIIStringEncoding];
现在,新的
streetNumber
字符串可以使用rangeOfString
方法按预期工作。