Я хотел бы удалить каждый объект из array
. Это значение для ключа name
можно найти в array2
. Я пробовал это с помощью цикла, но, к сожалению, моя реализация не сработала, операторы if
и else
выходили из всех объектов.Как удалить объекты из массива на основе объекта другого массива
Это то, что я хотел бы достичь:
NSArray *array = @[
@{
@"type" : @"2",
@"name" : @"apple"
},
@{
@"type" : @"1",
@"name" : @"peanut"
},
@{
@"type" : @"3",
@"name" : @"orange"
},
@{
@"type" : @"1",
@"name" : @"cheese"
},
];
NSArray *array2 = @[
@{
@"type" : @"2",
@"name" : @"apple"
},
@{
@"type" : @"1",
@"name" : @"cheese"
},
@{
@"type" : @"3",
@"name" : @"orange"
},
];
// new array from array and array2, that contains the unique objects from array
NSArray *newArray = @[
@{
@"type" : @"1",
@"name" : @"peanut"
},
];
Я не уверен, что это хороший подход, так что я был бы очень рад, если бы кто-то мог бы показать пример того, как сделать это с какой-либо другой техники , Не имеет значения, нужно ли использовать изменчивые или нормальные массивы, я просто попробовал его с изменчивым первым.
Это то, что мы пытались:
NSMutableArray *newArray = [self.array1 mutableCopy];
for (PFObject * object in newArray) {
PFObject *placeholderObject = object;
for (PFObject *object2 in self.array2) {
if ([placeholderObject[@"name"] isEqualToString:object2[@"name"]]) {
[self.array1 removeObject:object];
NSLog (@"EXISTING OBJECT FOUND %@", object);
} else {
NSLog(@"UNIQUE OBJECT FOUND %@", idO[@"hirCime"]);
}
}
}
Почему бы вам не добавить еще один ключ называется идентификатор и дать уникальный номер, так что вы можете сравнить этот уникальный номер удалите объекты. Иначе вы должны сравнить два ключа, что более сложно !!! –
Существует метод containsObject: метод, который вы можете использовать для сравнения объектов между двумя массивами. –
@MSU_Bulldog. Я попытался containsObject и не работал с ключевыми значениями объекта. – rihe