Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios rangeOfString与CLPlacemark值一起失败_Ios_Objective C - Fatal编程技术网

Ios rangeOfString与CLPlacemark值一起失败

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

我试图检测placemark值是否包含某些值。为此,我在NSString上使用rangeOfString方法。然而,rangeOfString可以像我预期的那样对字符串起作用,但不能像我预期的那样对placemark值起作用。我不明白为什么会这样

下面是一个例子:

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。