0

ディクショナリ キー オブジェクトを使用して配列からオブジェクト インデックスを取得しようとしていますが、取得できません。

詳細はこちら..

私は辞書を持つ配列を持っています....

 (
   {
        CATEGORYID = 865;
        CATEGORYNAME = "sample1";
        CATEGORYTHUMBIMAGEURL = "1.jpg";
    },
            {
        CATEGORYID = 140;
        CATEGORYNAME = "sample2";
        CATEGORYTHUMBIMAGEURL = "2.jpg";
    },
            {
        CATEGORYID = 1194;
        CATEGORYNAME = "sample3";
        CATEGORYTHUMBIMAGEURL = "3.jpg";
    }
); 

ここにCATEGORYIDがあります....カテゴリIDを使用して、配列でオブジェクトインデックスを取得する必要があります...

私が実装したコードは...

 int inx;
    for (int i=0; i<[mutArrData count]; i++) {
    NSString *str=(NSString*)[sender tag];
    //NSLog(@"MY Str %@",str);
    id myOjbect =(id)[sender tag];
    //NSLog(@"My OBJECT %d",[myOjbect intValue]);

    if ([[[mutArrData objectAtIndex:i] allKeys] containsObject:[NSString stringWithFormat:@"%d",[sender tag]]]) {
        inx=i;
        NSLog(@"Breaking here %d",inx);

    }

}

しかし、それを手に入れることができません。誰か助けてくれますか...

4

1 に答える 1

1

1 つの副次的な問題は、タグが整数であり、上記ではそれを NSString、オブジェクト、および整数として扱うことです。

配列をいくつかのサンプル データとしてリストしたと仮定すると、主な問題は allKeys がキー名の配列を返し、比較したい値ではないことです。

あなたがしたいことは、categoryid キーの int 値を引き出すことです:

// Return matching index, or -1 for not found
-(int)indexInArray:(NSArray)array forCategoryId:(int)categoryId {
  for (int i = 0; i < [array count]; i++) {
    int currentCategoryId = [[[array objectAtIndex:i] valueForKey:@"CATEGORYID"] integerValue];
    if (currentCategoryId == categoryId) {
      return i;
    }
  }
  return -1;
}
于 2012-07-24T13:27:50.917 に答える