1

別の元の NSArray から取得した NSDictionary の 2 つの要素を組み合わせた NSStrings の配列を作成しました。これは、UITableView での表示/並べ替えの目的で行いました。

次に、元の NSArray を使用して、ユーザーがセルに触れて didSelectCellAtIndexPath 関数を開始すると、cell.textLabel.text を変更された NSArray の NSString と比較し、配列カウンターを使用して元の NSDictionary を割り当てたいと思います。配列から singleEntryArray へ。

私は自分で試してみましたが、NSDictionary に null が返され続けていますが、その理由はわかりません。

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

どんな助けでも大歓迎です。

4

1 に答える 1

6

続行するには、述語forが true である必要があります。たとえば、通常は次のとおりです。

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

あなたの場合、おそらく最初の反復で true を取得しないため、singleEntryArray は割り当てられません。

このようにしてみてください:

  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]);
于 2013-04-30T21:46:25.653 に答える