Я пытаюсь найти поле Parse.com, которое является массивом для частичной строки.parse.com поиск частичной строки в массиве
Когда поле в формате Струнный я могу сделать следующее:
// Update the filtered array based on the search text and scope.
// Remove all objects from the filtered search array
[self.searchResults removeAllObjects];
// Filter the array using NSPredicate
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.busnumber contains[c] %@", searchText];
self.searchResults = [NSMutableArray arrayWithArray:[self.objects filteredArrayUsingPredicate:predicate]];
Это работает, однако новое поле я хочу искать в это массив. Это работает, когда я изменить его на следующее:
PFQuery * query = [PFQuery queryWithClassName:@"Bus"];
[query whereKey:@"route" equalTo:[NSString stringWithFormat:@"%@", searchText]];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
NSLog(@"Objects: %@", objects);
if (error)
{
NSLog(@"ERROR: %@", error.localizedDescription);
}
else
{
[self.searchResults removeAllObjects];
[self.searchResults addObjectsFromArray:objects];
[self.searchDisplayController.searchResultsTableView reloadData];
}}];
Однако мне нужна точная строка для этого.
Я хочу, чтобы иметь возможность поиска по части строки, хотя, но когда я изменить его на:
[query whereKey:@"route" containsString:[NSString stringWithFormat:@"%@", searchText]];
я получаю:
[Error]: $regex only works on string fields (Code: 102, Version: 1.7.4)
Любые идеи? Спасибо :)
Я не совсем уверен, где и как реализовать это ... Я добавил код облака и вызвал его в (void) filterContentForSearchText, используя PFCloud callFunctionInBackground, но результат пуст ... –
Возможно ничего соответствует? Вы не забыли развернуть развертывание? Хорошим шагом отладки было бы просто вернуть результат запроса (т. Е. Прокомментировать все в функции результата поиска и просто сказать «response.success (buses)»). Если это не удается, попробуйте выполнить hardcoding как «response.success (« hello world »)» и посмотрите, как это происходит. Я довольно уверен, что это работает (и не имеет лучшего альтернативного подхода). – danh
Хорошо, поэтому переход на 'response.success (buses)' возвращает результат со всеми шинами. Тем не менее, я не могу получить какие-либо данные при поиске, хотя я на 1000% уверен, что строка (или ее часть) существует в массиве. Пример массива «route»: '[« Pak Thang Khlong Kwang »,« Mooban Sethakit »,« Mall Bang Khae »]' –