2013-04-30 2 views
1

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

Затем, когда оригинальный элемент NSArray, когда пользователь касается ячейки и инициирует функцию didSelectCellAtIndexPath, хотел бы сопоставить cell.textLabel.text с NSString в модифицированном NSArray, а затем с помощью счетчика массива я хотел бы назначить NSDictionary исходного массива в singleEntryArray.

Я пробовал себя, но я все время возвращаю null в NSDictionary, но не знаю, почему.

for (int i=0; [[modifiedArray objectAtIndex:i] isEqualToString:cell.textLabel.text]; i++) { 
       singleEntryArray = [originalArray objectAtIndex:i]; 
      } 

Любая помощь была бы принята с благодарностью.

ответ

5

Предикат в for должен быть правдой для продолжения. Например, как правило:

for (i = 0; i < 10; i++) ... 

в вашем случае вы, вероятно, не получите истинное на первой итерации и, таким образом, singleEntryArray является Unassigned.

Попробуйте так:

int i = 0; 
    for (NSString *obj in modifiedArray) 
    if ([obj isEqualToString: cell.textLabel.text]) 
     break; 
    else 
     i++; 
    /* Value of 'i' is index into array. Caution if not found! */ 
    singleEntryArray = [originalArray objectAtIndex: i]; 

[править] Как @chuck указывает. Выше более удобно выражается как

int i = [modifiedArray indexOfObject: cell.textLabel.text]; 
singleEntryArray = (i == NSNotFound ? NULL : [originalArray objectAtIndex: i]); 
+0

Это работало отлично :) Большое спасибо: P – HurkNburkS

+3

@HurkNburkS: Этот цикл может быть сжата в 'INT I = [modifiedArray indexOfObject: cell.textLabel.text];' , и это будет полезно указать, был ли объект не найден, установив 'i' в NSNotFound. – Chuck

Смежные вопросы