-1

私は2つのアレイを持っています、

片方をもう片方から外したい。

ポインタが異なるため、removeObject:を使用できません。

プロパティに基づいてオブジェクトを削除しています(xa == ya)

他の配列からそのプロパティに基づいてオブジェクトを削除するにはどうすればよいですか?

ありがとう、

4

4 に答える 4

4

これを試して

NSMutableArray *arrFirst = [NSMutableArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys:@"1",@"topic_id",@"abc",@"topic_name",nil],
                     [NSDictionary dictionaryWithObjectsAndKeys:@"2",@"topic_id",@"opq",@"topic_name",nil],
                     [NSDictionary dictionaryWithObjectsAndKeys:@"3",@"topic_id",@"xyz",@"topic_name",nil], nil];

NSArray *arrSec = [NSArray arrayWithObject:[NSDictionary dictionaryWithObjectsAndKeys:@"2",@"topic_id",@"opq",@"topic_name",nil]];

NSArray *temp = [arrFirst filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF IN %@",arrSec]];
[arrFirst removeObjectsInArray:temp];
NSLog(@"%@",arrFirst);
于 2012-04-04T13:15:08.513 に答える
0

別のアイデアは、サブクラス化または独自のカテゴリの作成によって removeobject メソッドを上書きすることであるため、単一の for ループで十分です。

于 2012-04-04T12:46:31.957 に答える
0

この例を試してください

for(int i = 0; i< firstArray.count ; i++){
   NSString *first = [firstArray objectAtIndex:i];
   for(int j = 0; j< secondArray.count; j++){
      NSString *second = [econdArray objectAtIndex:j];
      if([first isEqualToString:second]){

         /// Do your methods

      }
   }
}
于 2012-04-04T12:44:19.757 に答える
0
BOOL GotOne = NO;

for(int i =0; i < mutableArray.count; i++)
{
    NSArray *temp = [mutableArray objectAtIndex:i];

    for(int j = 0; j < temp.count; j++)
    {
      //Do what u want with temp or check any condition
        if(success)
         {
           GotOne = YES;
           break;
         }
     }
     if(GotOne)
      {
          [mutableArray removeObjectAtIndex:i];
          GotOne = NO;
      }
}
于 2012-04-04T12:51:42.347 に答える