ios - 使用小写字母和数组过滤搜索文本的内容

标签 ios swift xcode filter

我在 firestore 中有 cities: [String] 的结构

struct CityList {
    var country: String
    var cities: [String]
}

在 firestore 中的结构看起来像在

1
    country: Russia
    cities: ["Moscow", "Saint-Petersburg"]
2
    country: USA
    cities: ["New York", "Los Angeles"]

当我使用 searchController 时,我需要使用字符串过滤数组 cities: [String]。现在我有了 func filterContentForSearchText

private func filterContentForSearchText(_ searchText: String) {
    filteredCityList = cityList.filter({ (cityList: CityList) -> Bool in
        return cityList.cities[0].lowercased().contains(searchText.lowercased())
    })
    tableView.reloadData()
}

我知道我的错误是 -> cities[0],但我不知道如何解决...

当我在 searchController 中写入文本时,searchController 仅搜索第一个城市,即莫斯科纽约

如何搜索莫斯科、圣彼得堡、纽约和洛杉矶

最佳答案

所以您的 cities[0] 只取第一个城市,我假设您需要搜索所有城市,所以我会检查 cities.contains。我还会使用 localizedCaseInsensitiveContains 而不是手动小写。

cities.contains {
    $0.localizedCaseInsensitiveContains(searchText)
}

过滤器将是:

cityList.filter { list in
    list.cities.contains { city in
        city.localizedCaseInsensitiveContains(searchText)
    }
}

关于ios - 使用小写字母和数组过滤搜索文本的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53943517/

相关文章:

ios - 避免项目中使用我的 iOS 框架和依赖项之一的重复符号的最佳方法是什么?

iphone - 如何在 xcode4 中进行无依赖清理

ios - iOS 10 中的 HLS && .m3u8

ios - 如何在applozic框架中自动重新加载聊天消息/聊天列表

swift - 从 uiimagepicker 中选取时出现裁剪问题

ios - 此 bundle 无效。 Info.plist 文件缺少所需的 key : CFBundleVersion

ios - NSFileManager 不创建文件夹

ios - 确定来自 NSInvocation getArgument 的 (void *) 指针是对象还是原语

iOS Swift 3 - 如何删除照片中最近删除的图像

ios - 在 SWIFT 中的函数链中间等待闭包完成