У меня есть NSMutableArray, где объекты могут быть добавлены. Добавленные объекты: SUPDataValue
объектов, содержащих кучу данных SUP
.Проверьте, существует ли уникальный объект в NSArray
В другом виде я беру этот массив объектов и разбиваю его на NSMutableArray
, содержащий NSMutableArray
для каждого раздела в виде таблицы. Когда добавляется еще один объект SUPDataValue
к моему первоначальному массиву объектов, и я возвращаюсь к представлению таблицы, я хочу перечитать весь объект из массива объектов и посмотреть, существуют ли эти объекты в моем многоуровневом массиве.
Я использую «objectExists», и он отлично работает ... однако ... если я добавлю тот же объект дважды в свой массив объектов, он всегда будет считать его существующим в слое.
Это мой код:
- (void)setInitialComponents:(NSMutableArray*)components
{
if (self.componentLayer)
{
for (SUPDataValueList *val in components)
{
BOOL found = NO;
for (NSMutableArray *layer in self.componentLayer)
{
if ([layer containsObject:val])
{
found = YES;
}
}
if (!found)
{
[[self.componentLayer objectAtIndex:0] addObject:val];
}
}
}
else {
self.componentLayer = [NSMutableArray array];
// Add the no-layer layer (section 0)
[self.componentLayer addObject:[NSMutableArray array]];
if (self.addMode)
{
[[self.componentLayer objectAtIndex:0] addObjectsFromArray:components];
}
else {
for (SUPDataValueList * val in components)
{
int layer = [[NSString stringWithFormat:@"%@", [val item:38]] intValue];
if (self.componentLayer.count < layer)
{
[self.componentLayer insertObject:[NSMutableArray array] atIndex:layer-1];
}
[[self.componentLayer objectAtIndex:layer-1] addObject:val];
}
}
}
[self.tableView reloadData];
}
Как вы уже догадались, моя проблема здесь:
if ([layer containsObject:val])
{
found = YES;
}
Я хотел бы проверить, если уникальный объект существует в этом массиве (с использованием памяти идентификатор выделения или что-то еще?) Как это сделать?
Почему бы просто не использовать 'NSSet'? –
Поскольку вы не можете добавить два одинаковых объекта к NSSet, если я не ошибаюсь. Я попробовал NSSet, и у меня только 1 объект SUPDataValue, а не несколько. –
'NSCountedSet' может соответствовать вашему счету, затем – Monolo