搜索对象的数组属性包含指定字符串的Parse对象

时间:2015-11-06 17:36:53

标签: ios parse-platform pfquery nosql

我有一个PFObject子类,它存储一个字符串数组作为其属性之一。我想查询此类的所有对象,其中一个或多个字符串提供的子字符串开头。

示例可能有所帮助:

我有一个Person类,用于存储firstNamelastName。我想提交一个PFQuery来搜索名称匹配的Person个对象。具体而言,如果名字或名字的任何“组成部分”都以提供的搜索词开头,则应将某人视为匹配。

例如,名字" Mary Beth Smith-Jones"应被视为与bethbet匹配,但不是eth

为了帮助解决这个问题,我为beforeSave课程设置了一个Person触发器,将该人的名字和姓氏分解为单独的组件(并将其缩小)。这意味着我的玛丽贝丝史密斯琼斯"记录看起来像这样:

firstName:“玛丽贝丝”

lastName:“史密斯 - 琼斯”

searchTerms:[“mary”,“beth”,“smith”,“jones”]

我能得到的最接近的是使用whereKey:EqualTo,它会在对数组运行时实际返回匹配项:

    let query = Person.query()
    query?.whereKey(“searchTerms”, equalTo: “beth”)
    query?.findObjectsInBackgroundWithBlock({ (places, error) -> Void in
        //Mary Beth is retuned successfully
    })

但是,这仅匹配完全字符串相等; query?.whereKey(“searchTerms”, equalTo: “bet”)不会返回相关记录。

我想我可以将名称分解并将所有可能的顺序组件存储为搜索字词bethbeetthbetetcbeth等等,但这远非可扩展。

有任何关于从Parse中提取这些记录的建议吗?如有必要,我愿意改变我的方法。

1 个答案:

答案 0 :(得分:0)

您为此尝试了whereKey:hasPrefix:吗?我不确定这是否可用于数组值。

https://parse.com/docs/ios/guide#queries-queries-on-string-values