我的应用中有一个搜索栏,它在Parse中搜索的项目有一个属性" searchTokens"在我的数据库中,它是根据该项目的几个不同属性编译的。
但是,在搜索时,我能看到匹配项目的唯一方法如下:
query?.whereKey("searchTokens", containsAllObjectsIn: keywords)
问题是,这只返回每个关键字都匹配的项目,而不是任何关键字。
我没有看到任何可以实现此目的的其他Parse函数,也不知道如何以其他方式自己完成。
想法?
编辑: 我对某人发布的答案的评论我认为有点清晰?:
啊,所以,Parse是一个基于mongoDB的服务的后端,它不是本地的。查询?你在我的帖子中看到的是PFQuery类型。 containsAllObjectsIn是一个获取对象列表的函数(因此我上面的代码中的关键字是复数;在这个实例中匹配字符串)并将所有关键字匹配到"列"在我的"表"这是与该条目相关的搜索词/标记列表。
答案 0 :(得分:0)
此扩展程序会有所帮助
extension String{
func containsIgnoringCase(find: String) -> Bool{
//next two line might be necessary if you are using special language other than english
//let locale = Locale.init(identifier: $language identifier$)
//let temp = self.lowercased(with: locale)
return self.range(of: find, options: .caseInsensitive) != nil
}
}
如果我做对了,请使用您的数据库列表并使用此方法过滤,如
let newList = yourlist.filter{$0.containsIgnoringCase(find: $search key$)}