对于我正在构建的应用,我想实现一项功能,允许用户指定 Wine 的地理来源(国家(例如法国)、区域(例如波尔多)、次区域(例如保乐克))。
我想确保不必自己添加所有可用的国家/地区,并且进入数据库的所有信息都是有效的。因此,我决定按如下方式进行:
- 用户添加了一种新酒并输入了它来自的国家/地区的名称
- 打字时,应用会在苹果 map 数据库中搜索
- 此搜索的结果显示为建议,当用户点按建议时,应用会创建一个包含所有相关信息的
Country
对象。只有当存在这样的对象时,酒车才会被保存
这工作正常,除了一件事:苹果 map 从任何地方返回任何东西,比如餐馆、商店等等。
我的问题:如何指定我要查找的内容?我只能指定我正在搜索的区域,这与我的情况无关。我希望能够告诉苹果 map 只查找国家、地区、城市等。这在某种程度上可能吗?我为此用尽了谷歌,但到目前为止还没有找到办法。
最佳答案
与@Trevor 所说的相反,如果您只想要城市和城镇,我发现拒绝标题或副标题有数字的结果会产生很好的结果。
Swift 4.1代码:
// Store this as a property if you're searching a lot.
let digitsCharacterSet = NSCharacterSet.decimalDigits
let filteredResults = completer.results.filter { result in
if result.title.rangeOfCharacter(from: digitsCharacterSet) != nil {
return false
}
if result.subtitle.rangeOfCharacter(from: digitsCharacterSet) != nil {
return false
}
return true
}
或更简洁:
let filteredResults = completer.results.filter({ $0.title.rangeOfCharacter(from: digitsCharacterSet) == nil && $0.subtitle.rangeOfCharacter(from: digitsCharacterSet) == nil })
关于ios - MapKit 定义所需的搜索结果类型(国家、城市、地区等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42028453/