我有一个PFObject子类,它存储一个字符串数组作为其属性之一。我想查询此类的所有对象,其中一个或多个字符串以提供的子字符串开头。
示例可能有所帮助:
我有一个Person
类,用于存储firstName
和lastName
。我想提交一个PFQuery
来搜索名称匹配的Person
个对象。具体而言,如果名字或名字的任何“组成部分”都以提供的搜索词开头,则应将某人视为匹配。
例如,名字" Mary Beth Smith-Jones"应被视为与beth
和bet
匹配,但不是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”)
不会返回相关记录。
我想我可以将名称分解并将所有可能的顺序组件存储为搜索字词b
,e
,t
,h
,be
, et
,th
,bet
,etc
,beth
等等,但这远非可扩展。
有任何关于从Parse中提取这些记录的建议吗?如有必要,我愿意改变我的方法。
答案 0 :(得分:0)
您为此尝试了whereKey:hasPrefix:
吗?我不确定这是否可用于数组值。
https://parse.com/docs/ios/guide#queries-queries-on-string-values