2014-02-12 4 views
0

Я использую parse и пытаюсь использовать приведенный ниже код, чтобы проверить, какие пользователи имеют определенную строку в массиве @ "Id1". Однако я не получаю никаких объектов. Является ли whereKey: containsString только для поиска значений строки синтаксического анализа? Если да, то как я могу искать в массивах синтаксического анализа, чтобы увидеть, содержат ли они строку? Заранее спасибо.Parse find string in array

NSString *searchId = [[NSUserDefaults standardUserDefaults] objectForKey:@"searchId"]; 

PFQuery *query = [PFUser query]; //1 

[query whereKey:@"Id1" containsString:searchId]; 

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {//4 
    if (!error) { 
     NSLog(@"1"); 
     self.ObjectsArray = nil; 
     self.ObjectsArray = [[NSArray alloc] initWithArray:objects]; 
    } else { 
     [[[UIAlertView alloc] initWithTitle:@"Error" message:@"Please make sure you have a proper device connection." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; 
    } 
}]; 

ответ

2

Если вы ищете полную строку, это намного проще. Для того, чтобы искать для одного значения в массиве, используйте whereKey:equalTo:, как описано здесь:

https://parse.com/docs/ios_guide#queries-arrays/iOS

[query whereKey:@"Id1" equalTo:searchId]; 

Это возвращает строки, в которых по крайней мере один элемент в массиве равно критерию поиска (номера ручки, строки, булевы и т. д.).

Если вы действительно хотите найти записи, в которых по крайней мере один элемент массива содержит строку внутри него, вам будет сложно.

Одним из вариантов было бы иметь не видимое поле, называемое (например, «Id1_search»). Создайте обработчик облачного кода до обновления, который объединяет все значения массива в список запятой, также преобразуя его в нижний регистр. Затем вы можете использовать whereKey:containsString: в этом новом поле.

+0

Большое вам спасибо! –