我有一个NSMutableArray,可以往里面添加对象。添加的对象是包含一堆SUP数据的 SUPDataValue 对象。
在另一个视图中,我将这个对象数组分成一个NSMutableArray,其中包含每个表格视图部分的NSMutableArray。 当我向我的初始对象数组添加另一个 SUPDataValue 对象,并切换回我的表格视图时,我想重新读取对象数组中的所有对象,并查看这些对象是否存在于我的分层数组中。
我正在使用“objectExists”,它运行良好……然而……如果我将同一个对象两次添加到我的对象数组中,它将始终认为它存在于一个层中。
这是我的代码:
正如你所猜测的那样,我的问题出在这里:
在另一个视图中,我将这个对象数组分成一个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;
}
我想要检查一个唯一的对象是否存在于该数组中(使用内存分配ID或其他方式?)
我该如何做到这一点?
NSSet
呢? - user529758NSCountedSet
可能适合你的需求。 - Monolo