MKLocalSearch 结果的唯一 ID?

Posted

技术标签:

【中文标题】MKLocalSearch 结果的唯一 ID?【英文标题】:Unique ID of MKLocalSearch result? 【发布时间】:2018-08-15 09:33:34 【问题描述】:

我的应用显示MKLocalSearch 查询的结果。

用户可以选择这样一个地方并说“我喜欢这个地方”。

当用户再次搜索时(关闭App后),我的App怎么知道用户已经喜欢这个地方了?

结果中是否存在不依赖于语言环境(下一次搜索相同)且唯一(不被同一位置的其他地方共享)的内容

        let request = MKLocalSearchRequest()
        request.region = mapView.region
        request.naturalLanguageQuery = query
        let search = MKLocalSearch(request: request)
        search.start  (response, error) in
            // do I know some items in the response?
        

【问题讨论】:

取决于,您如何实现用户“喜欢这个地方”。我猜你必须将用户喜欢的地方存储在核心数据或类似的东西中,所以只需获取这些结果并根据需要引用它们。 我使用核心数据,但这不是问题。问题是下次调用MKLocalSearchRequest()时如何识别结果。 从核心数据中获取喜欢的地点列表,执行 MKLocalSearchRequest 并检查您的核心数据集中是否存在任何返回的完整字符串。看起来查询的结果只是一个匹配的字符串列表,没有唯一的 id 我已经这样做了。问题是:当我没有唯一 ID 时,我可以使用哪些字符串或其他什么来比较? 我可能在这里误解了,但MKLocalSearchRequest 有一个完成处理程序https://developer.apple.com/documentation/mapkit/mklocalsearchcompleter,它返回标题、副标题和匹配范围。所以你唯一的选择是真正使用标题或使用不同的方法。可能是places API 或地理编码。如果我搜索“苹果头”,我可能会得到苹果总部,库比蒂诺的结果。所以我喜欢这样,如果我进行类似的搜索,列表中可能会返回相同的文本。所以将我的苹果总部库比蒂诺与结果进行比较。 【参考方案1】:

您应该将电话号码作为响应的一部分取回,您可以将其用作该位置的唯一 ID。

【讨论】:

这是一个很好的答案,尽管一个城市的不同旅游信息点通常共享相同的电话号码。我喜欢电话号码不依赖于语言环境。

以上是关于MKLocalSearch 结果的唯一 ID?的主要内容,如果未能解决你的问题,请参考以下文章

MKLocalSearch 没有找到明显的结果

Postgresql 直接在查询结果中生成唯一ID

如何使具有唯一 ID 的 URL 美观并提高搜索结果的可见性

MySQL如何返回唯一/不同的结果?

我如何将来自 3 个具有唯一 ID 的不同表的结果组合到 mysql 中

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