Realm没有用空格查询string字段

我在我的数据源中有这样的function:

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 } 

当我尝试查询包含空白的string时,我没有结果,但如果我用简单的单词参数查询,一切都很好。 这是为什么? 我可以在Realm中有一个由多个单词组成的string字段吗?

您正在使用的谓词是查找其foodType属性等于传入的stringtype对象。只有属性完全等于该string的那些对象才会匹配。 如果你想执行一些其他forms的匹配,你需要使用除了相等运算符之外的东西。 BEGINSWITHCONTAINSENDSWITHLIKE是Realm在string字段上支持的比较运算符。

我可以在Realm中有一个由多个单词组成的string字段吗?

string字段可以包含任何string值。 支持的比较运算符不具有“单词”的概念,所以如果要使用该概念进行过滤,则可能需要您做进一步的工作。 根据您的使用情况,我可以看到几种方法:

  • 使用CONTAINS查找foodType属性包含给定typestring的任何对象。

  • 将stringparsing为存储在模型中的结构化数据。 例如,为foodType属性存储List<FoodType>而不是StringfoodType

有可能还有其他的select,但是它们取决于你试图达到什么的细节。