gpt4 book ai didi

iOS MKMapItem - 如何访问所有成员?

转载 作者:行者123 更新时间:2023-11-29 12:43:23 38 4
gpt4 key购买 nike

我正在使用 MapKit 进行本地搜索,该搜索返回一个或多个 MKMapItem 对象。但是我在调​​试器中可以看到该对象的一些成员,但我无法访问。我特别需要的是UID。

我试过 item.placemark,但它不允许我访问 UID。这看起来应该很简单。我在这里缺少什么?

这不起作用:NSString *uid = item.placemark.UID

这不起作用:

NSDictionary *mapItemDictionary = (NSDictionary *)item;
NSString *uid = [mapItemDictionary objectForKey:@"UID"];

但是调试器命令 po item 向我显示了对象的所有成员:

Name: Shell CurrentLocation: 0 Place: <GEOPlace: 0x17014e650> 
{
address = {

business = (
{
**UID = 2478578482074921045**;
URL = "www.shell.com";
canBeCorrectedByBusinessOwner = 1;
name = Shell;
source = (
{
"source_id" = A3H0281540;
"source_name" = "acxiom_us";
},
{
"source_id" = 2276257;
"source_name" = localeze;
}
);
telephone = "+14803968213";
}
);

如有任何帮助,我们将不胜感激。这是我正在使用的代码:

MKLocalSearch *localSearch = [[MKLocalSearch alloc] initWithRequest:request];
[localSearch startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error)
{

[response.mapItems enumerateObjectsUsingBlock:^(MKMapItem *item, NSUInteger idx, BOOL *stop)
{

MKPlacemark *placemark = (MKPlacemark *)item.placemark;
NSDictionary *addressDict = placemark.addressDictionary;
NSArray *businessArray = addressDict[@"business"];// businessArray is NIL

NSString *uid=nil;

if (businessArray != nil && businessArray.count >0) {
NSDictionary *businessDict=businessArray[0];
uid=businessDict[@"UID"];
}

NSLog(@"UID is %@",uid);

}];

最佳答案

好的,经过大量挖掘之后,信息似乎在几个私有(private)对象中。 “place”属性是一个 GEOPlace,它有一个属性 business,它是一个包含 GEOBusiness 对象的数组。由于这是私有(private)数据,您无法通过属性直接访问它,但您可以通过键值编码来获取它。以下代码提取 UID -

[response.mapItems enumerateObjectsUsingBlock:^(MKMapItem *item, NSUInteger idx, BOOL *stop) {

NSValue *place = [item valueForKey:@"place"];
NSArray *businessArray = (NSArray *)[place valueForKey:@"business"];

NSNumber *uid=nil;

if (businessArray != nil && businessArray.count >0) {
id geobusiness=businessArray[0];
uid=[geobusiness valueForKey:@"uID"];
}

NSLog(@"UID is %@",[uid stringValue]);

}];

因为这是私有(private)数据结构,所以不能保证它不会改变。我也不确定 App 商店验证过程是否会将此标记为私有(private) api 访问 - 因为它使用 valueForKey 我不认为它会,但不能保证。

关于iOS MKMapItem - 如何访问所有成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24300138/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com