为啥使用 MKLocalSearch 会返回错误并且无法加载预期结果?

Posted

技术标签:

【中文标题】为啥使用 MKLocalSearch 会返回错误并且无法加载预期结果?【英文标题】:Why using MKLocalSearch returns an error and fails to load the expected results?为什么使用 MKLocalSearch 会返回错误并且无法加载预期结果? 【发布时间】:2014-03-05 00:16:44 【问题描述】:

我正在 Mavericks 中开发 Mac OS X 应用程序,并且在执行以下代码时收到错误消息:

MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init];
request.naturalLanguageQuery = @"Pizza Hut";
MKLocalSearch *search = [[MKLocalSearch alloc] initWithRequest:request];

[search startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error) 
    if (response.mapItems.count == 0)
        NSLog(@"No Matches");
    else
        for (MKMapItem *item in response.mapItems) 
            NSLog(@"name = %@", item.name);
        
];

我只是尝试使用MKLocalSearch 搜索“必胜客”,而没有在MKLocalSearchRequest 上设置任何region,因此我可以获得全局结果,而不仅仅是我附近的地方。但是此代码无法执行,我在控制台中收到以下错误:

PBRequester 失败,错误域=NSPOSIXErrorDomain 代码=1 “操作无法完成。操作不允许” 用户信息=0x60800067d680 NSErrorFailingURLStringKey=https://gsp-ssl.ls.apple.com/search.arpc, NSErrorFailingURLKey=https://gsp-ssl.ls.apple.com/search.arpc

因此,"No Matches" 打印在我的控制台中。关于为什么会发生这种情况的任何想法?我在Capabilites 中打开了地图,我在我的权利中有MapKit.frameworkcom.apple.developer.map 键。这里缺少什么吗?谢谢!

【问题讨论】:

这可能是由于沙盒和缺少权利造成的吗?详情请查看developer.apple.com/library/mac/documentation/security/… 【参考方案1】:

我必须启用“传出连接(客户端)”网络授权才能使定位服务正常工作。

我使用 MKLocalSearch 的 OS X 应用程序的最小权利文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
    <key>com.apple.security.network.client</key>
    <true/>
    <key>com.apple.security.personal-information.location</key>
    <true/>
</dict>
</plist>

遗憾的是,Apple 的 Entitlement Key Reference 没有提到这一点。也许我们应该提交一个文档错误。

此外,用于代码签名的供应配置文件(检查目标中的“构建设置”)必须启用“地图”服务。您可以在 Developer Portal 的“证书、标识符和配置文件”部分查看:

【讨论】:

以上是关于为啥使用 MKLocalSearch 会返回错误并且无法加载预期结果?的主要内容,如果未能解决你的问题,请参考以下文章

MKLocalSearch 返回区域外的结果

iOS MKLocalSearch导致崩溃[重复]

MKLocalSearch 生成没有 URL 的 MKMapItems

正确使用 MKLocalSearch CompletionHandler

如何使用 MKLocalSearch 请求获取附近的地方、照片

使用 MKLocalSearch/MapKit 查找附近的餐馆?