【问题标题】:Unique ID of MKLocalSearch result?MKLocalSearch 结果的唯一 ID?
【发布时间】: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 或地理编码。如果我搜索“苹果头”,我可能会得到苹果总部,库比蒂诺的结果。所以我喜欢这样,如果我进行类似的搜索,列表中可能会返回相同的文本。所以将我的苹果总部库比蒂诺与结果进行比较。

标签: swift mapkit mklocalsearch


【解决方案1】:

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

【讨论】:

  • 这是一个很好的答案,尽管一个城市的不同旅游信息点通常共享相同的电话号码。我喜欢电话号码不依赖于语言环境。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
  • 2020-09-09
  • 1970-01-01
  • 1970-01-01
  • 2013-02-04
  • 2022-12-07
  • 1970-01-01
相关资源
最近更新 更多