Ios rangeOfString与CLPlacemark值一起失败
我试图检测placemark值是否包含某些值。为此,我在NSString上使用rangeOfString方法。然而,rangeOfString可以像我预期的那样对字符串起作用,但不能像我预期的那样对placemark值起作用。我不明白为什么会这样 下面是一个例子:Ios rangeOfString与CLPlacemark值一起失败,ios,objective-c,Ios,Objective C,我试图检测placemark值是否包含某些值。为此,我在NSString上使用rangeOfString方法。然而,rangeOfString可以像我预期的那样对字符串起作用,但不能像我预期的那样对placemark值起作用。我不明白为什么会这样 下面是一个例子: NSString *streetNumber = @"243-244"; //same value as the placemark.subThoroughfare NSRange range1 = [streetNumber ra
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
如果将模拟器位置设置到旧金山,当前位置PrimeMARK子通道包含“--”/P>
有人知道为什么会发生这种情况,以及你会如何处理吗?事实证明安娜的建议是正确的。通过一些检查,我能够确定placemark字符串不完全是ascii。要解决此问题,我首先将字符串转换为ascii:
NSData *asciiData = [placemark.subThoroughfare dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *streetNumber = [[NSString alloc] initWithData:asciiData encoding:NSASCIIStringEncoding];
新的
streetNumber
字符串现在可以像您预期的那样使用rangeOfString
方法。它可能是一个unicode破折号,而不是常规破折号。这是一个好主意。我不认为这是因为PrimeARK.Valk应该返回一个NSCORT。