私は2つのアレイを持っています、
片方をもう片方から外したい。
ポインタが異なるため、removeObject:を使用できません。
プロパティに基づいてオブジェクトを削除しています(xa == ya)
他の配列からそのプロパティに基づいてオブジェクトを削除するにはどうすればよいですか?
ありがとう、
これを試して
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);
別のアイデアは、サブクラス化または独自のカテゴリの作成によって removeobject メソッドを上書きすることであるため、単一の for ループで十分です。
この例を試してください
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
}
}
}
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;
}
}