我有一个NSMutableArray,可以在其中添加对象。添加的SUPDataValue
对象是包含一堆SUP
数据的对象。
在一个其它视图,我借此对象阵列和将其划分为一个NSMutableArray
含一个NSMutableArray
用于在每的tableview部分。当将另一个SUPDataValue
对象添加到我的初始Object数组中时,我切换回表视图,我想从该对象数组中重新读取所有对象,并查看这些对象是否存在于我的分层数组中。
我正在使用“ 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或其他?)我该怎么做?
containsObject方法将在要比较的基础对象上调用isEqual:。
除非在SUPDataValueList对象中实现isEqual:,否则它将仅进行指针比较,这是NSObject中isEqual的默认行为。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句