indexOfObject не соответствует правильно - PullRequest
2 голосов
/ 31 января 2011

Я застрял с этой проблемой пару дней и не могу избавиться от нее.Я искал по всей сети, но не смог найти ничего полезного для решения моей проблемы.

это сценарий.

У меня есть массив строк, содержащий кучуИдентификаторы получены из базы данных sqlite db, и я хотел бы знать индекс определенного элемента в этом массиве.

Мое первое решение было бы так же просто, как использование indexOfObject

-(NSInteger) getPageId:(NSString *)symbol_id {
    NSInteger refId = [myIds indexOfObject:symbol_id];
    // .. stuff ..
    return refId;
}

теперь я не знаю почему, но возвращаемое значение функции всегда NSNotFound.Если я распечатываю значения через NSLog

NSLog(@"%@\n%@", myIds, symbol_id);

, я ясно вижу, что искомое значение вычисляется в элементах массива.

Я даже пыталсясамое глупое решение, например, проверка соответствия с помощью функции isEqual в цикле for:

int idx = 0;
for(NSString *tok in myIds) {
   if([tok isEqual:synmbol_id])
   {
     NSLog(@"yay, a match was encountered!!");
     return idx;
   }
   idx++;
}

, но выполнение никогда не попадает в NSLog.

Я не знаю, куда стучать головой.

надеюсь, что некоторые из вас уже поняли это и могли бы объяснить это мне.

спасибо заранее

k

1 Ответ

2 голосов
/ 31 января 2011

Попробуйте напечатать все элементы массива следующим образом:

for(NSString *tok in myIds) {
   NSLog(@"On the array [%@]", tok);
}

Возможно, в вашем NSString сообщении isEqual есть сообщение TAB \t, ENTER \n или что-то странноебежать, как ожидалось.Обычно эти символы трудно найти в обычном отладчике.Вот почему я предлагаю заключить строку в [].

...