【发布时间】: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