Ios 从MapItem读取数据时,Xcode Geocodeing InitWithCoordination函数正在弄乱通道和其他2个字段

Ios 从MapItem读取数据时,Xcode Geocodeing InitWithCoordination函数正在弄乱通道和其他2个字段,ios,xcode,geocoding,mkplacemark,mkmapitem,Ios,Xcode,Geocoding,Mkplacemark,Mkmapitem,我想知道以前是否有人见过这一点,我认为initWithCoordinate的地理编码例程的Xcode中有一个bug,地址的PlaceMark MKPlaceMark被放置到MapItem中 考虑下面的代码,在我通过CLPlaceMark将一个地理编码位置(即Lat/Lon)返回到一个文本类型的地址后,我循环通过结果将其转换为MKPlaceMark并将其存储为MapItems,然而,在运行时,我意识到Xcode/IOS可以很好地复制大多数地址键,但会弄乱子管理员区域的键,次干道,以及对地址非常重要

我想知道以前是否有人见过这一点,我认为initWithCoordinate的地理编码例程的Xcode中有一个bug,地址的PlaceMark MKPlaceMark被放置到MapItem中

考虑下面的代码,在我通过CLPlaceMark将一个地理编码位置(即Lat/Lon)返回到一个文本类型的地址后,我循环通过结果将其转换为MKPlaceMark并将其存储为MapItems,然而,在运行时,我意识到Xcode/IOS可以很好地复制大多数地址键,但会弄乱子管理员区域的键,次干道,以及对地址非常重要的干道。请参见下面我的代码片段:

         for (int i=0; i < PlaceMarks.count; i++)
         {
             PlaceMark_CL = [PlaceMarks objectAtIndex:i];
             PlaceMark_MK = [[MKPlacemark alloc] initWithCoordinate:PlaceMark_CL.location.coordinate addressDictionary:PlaceMark_CL.addressDictionary];
             MapItem = [MapItem initWithPlacemark:PlaceMark_MK];
             [MapItem setName:PlaceMark_MK.name];


             NSLog(@"GeoCoded: SubLocality: '%@ / %@', Locality: '%@ / %@', AdministrativeArea: '%@ / %@', Country: '%@ / %@', CountryCode: '%@ / %@', InLandWater: '%@ / %@', ISOCode: '%@ / %@', Name: '%@ / %@', Ocean: '%@ / %@', PostCode: '%@ / %@', SubAdminArea: '%@ / %@', SubLocality: '%@ / %@', SubThoroughfare: '%@ / %@', Thoroughfare: '%@ / %@', Title: '%@ / %@'"
                   , [PlaceMark_MK subLocality]
                   , MapItem.placemark.subLocality
                   , [PlaceMark_MK locality]
                   , MapItem.placemark.locality
                   , [PlaceMark_MK administrativeArea]
                   , MapItem.placemark.administrativeArea
                   , [PlaceMark_MK country]
                   , MapItem.placemark.country
                   , [PlaceMark_MK countryCode]
                   , MapItem.placemark.countryCode
                   , [PlaceMark_MK inlandWater]
                   , MapItem.placemark.inlandWater
                   , [PlaceMark_MK ISOcountryCode]
                   , MapItem.placemark.ISOcountryCode
                   , [PlaceMark_MK name]
                   , MapItem.placemark.name
                   , [PlaceMark_MK ocean]
                   , MapItem.placemark.ocean
                   , [PlaceMark_MK postalCode]
                   , MapItem.placemark.postalCode
                   , [PlaceMark_MK subAdministrativeArea]
                   , MapItem.placemark.subAdministrativeArea
                   , [PlaceMark_MK subLocality]
                   , MapItem.placemark.subLocality
                   , [PlaceMark_MK subThoroughfare]
                   , MapItem.placemark.subThoroughfare
                   , [PlaceMark_MK thoroughfare]
                   , MapItem.placemark.thoroughfare
                   , [PlaceMark_MK title]
                   , MapItem.placemark.title
                   );

             [TempSearchResultsSorted addObject:MapItem];
         }
然而,我得到了一个错误,因为这将不工作,不知道你们是否看到了这一点

你觉得怎么样

谢谢和问候

海德·萨蒂

--------------------编辑:2小时后

此外,我只是浏览了每个函数生成的字典项,才发现MKMapItem完全忽略了3个元素,并且在请求时只对输出进行了阴影处理,因为新字典中不存在确切的值。请参阅下面我用来转储内容的代码:

             NSLog(@"CL:");
             for (NSString *Key in PlaceMark_CL.addressDictionary)
             {
                 id Value = [PlaceMark_CL.addressDictionary objectForKey:Key];
                 NSLog(@"%@, = '%@', ", Key, Value);
             }

             NSLog(@"MK:");
             for (NSString *Key in PlaceMark_MK.addressDictionary)
             {
                 id Value = [PlaceMark_MK.addressDictionary objectForKey:Key];
                 NSLog(@"%@, = '%@', ", Key, Value);
             }

             NSLog(@"MI:");
             for (NSString *Key in MapItem.placemark.addressDictionary)
             {
                 id Value = [MapItem.placemark.addressDictionary objectForKey:Key];
                 NSLog(@"%@, = '%@', ", Key, Value);
             }
使用上述内容,您可以清楚地看到,在字典的MI部分下,Throughtree、SubThroughtree和SubAdminArea这3个元素没有复制到MKMapItem!的字典中!,我想,除非有人知道得更清楚,否则我现在将依靠一本手工词典来储存这些信息

如果你有同样的问题,我希望这对你有所帮助

我现在不会将问题标记为已回答,因为我将与苹果公司谈话,看看这是否是一个bug或功能:

问候 海德

--------------------->编辑,一小时后


我刚刚向苹果公司提交了一份缺陷报告,参考号:16026923,我希望能尽快收到他们的回复。

在与苹果公司就上述缺陷进行了沟通后,这一问题已在IOS-8中得到解决,我对其进行了测试,并确认现在可以正常工作

问候
Heider

您正在讨论MapKit框架的潜在缺陷,而不是Xcode IDEYes Patrick,我已经在标记上使用了MapKit框架,不幸的是,StackOverflow只允许我添加5个标记,不得不删除这些标记。谢谢
             NSLog(@"CL:");
             for (NSString *Key in PlaceMark_CL.addressDictionary)
             {
                 id Value = [PlaceMark_CL.addressDictionary objectForKey:Key];
                 NSLog(@"%@, = '%@', ", Key, Value);
             }

             NSLog(@"MK:");
             for (NSString *Key in PlaceMark_MK.addressDictionary)
             {
                 id Value = [PlaceMark_MK.addressDictionary objectForKey:Key];
                 NSLog(@"%@, = '%@', ", Key, Value);
             }

             NSLog(@"MI:");
             for (NSString *Key in MapItem.placemark.addressDictionary)
             {
                 id Value = [MapItem.placemark.addressDictionary objectForKey:Key];
                 NSLog(@"%@, = '%@', ", Key, Value);
             }