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?的主要内容,如果未能解决你的问题,请参考以下文章
如何使具有唯一 ID 的 URL 美观并提高搜索结果的可见性