领域不用空格查询字符串字段

时间:2017-08-22 19:33:22

标签: ios swift realm

我的数据源中有这样的功能:

func getAllFood(by type: String) -> [UserFoodInformation] {
    var findedFood = [UserFoodInformation]()
    findedFood.append(contentsOf: baseUserFoodDataSource.getAllFood(by: type))
    let predicate = NSPredicate(format: "foodType == %@", type)
    let resultOfSearching = dataBase.objects(AddedUserFood.self).filter(predicate).sorted(byKeyPath: "name")
    for searchedFood in resultOfSearching {
        findedFood.append(searchedFood)
    }
    return findedFood
}

当我尝试使用包含空格的字符串进行查询时,我没有结果,但如果我使用简单的单字参数进行查询,一切都很顺利。这是为什么?我可以在Realm中有一个包含多个单词的字符串字段吗?

1 个答案:

答案 0 :(得分:2)

您正在使用的谓词正在查找type属性等于传入的BEGINSWITH字符串的对象。只有那些属性与该字符串完全相同的对象才会匹配。如果要执行其他形式的匹配,则需要使用除等于运算符之外的其他内容。 CONTAINSENDSWITHLIKECONTAINS是Realm在字符串字段上支持的比较运算符。

  

我可以在Realm中有一个包含多个单词的字符串字段吗?

字符串字段可以包含任何字符串值。虽然支持的比较运算符没有#34; word"的概念,所以如果你想使用这个概念进行过滤,你可能需要做更多的工作。根据您的使用情况,我可以看到几种方法:

  • 使用foodType查找type个属性包含给定List<FoodType>字符串的任何对象。

  • 将字符串解析为存储在模型中的结构化数据。例如,为String属性存储foodType而不是{{1}}可能是有意义的。

可能还有其他选择,但它们取决于您的目标细节,并尝试实现您尚未分享的内容。