У меня есть подкласс PFObject, который хранит массив строк в качестве одного из его свойств. Я хотел бы запросить для всех объектов этого класса, где одна или несколько из этих строк начинаются с предоставленной подстрокой.Поиск объектов Parse, где свойство массива объекта содержит указанную строку
Примером может помочь:
У меня есть Person
класс, который хранит firstName
и lastName
. Я хотел бы отправить PFQuery
, который ищет Person
объектов, соответствующих названию. В частности, лицо должно считаться совпадением, если если какой-либо «компонент» первого или последнего имени начинается с предоставленного условия поиска.
Например, имя «Mary Beth Smith-Jones» следует рассматривать как матч для beth
и bet
, но не eth
.
Для этого у меня есть триггер beforeSave
для класса Person
, который разбивает имена и фамилии человека на отдельные компоненты (а также их нижние регистры). Это означает, что моя "Мэри Бет Смит-Джонс" запись выглядит следующим образом:
firstName
: «Мэри Бет»
lastName
: «Смит-Джонс»
searchTerms
: [ «мэри», «Бэт »,„кузнец“,„Джоунс“]
ближайший я могу получить, чтобы использовать 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? При необходимости я могу изменить свой подход.
у меня есть - он может быть использован только на струнах. Спасибо хоть. –
И ваши ценности ...? – Moonwalkr
'hasPrefix' может применяться только к столбцу строки. Моя колонка представляет собой ** массив ** строк. –