gpt4 book ai didi

ios - 检查 NSArray 中是否存在唯一对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:47:20 26 4
gpt4 key购买 nike

我有一个 NSMutableArray,可以在其中添加对象。添加的对象是包含一堆 SUP 数据的 SUPDataValue 对象。

在另一个 View 中,我将这个对象数组分成一个 NSMutableArray,其中包含一个 NSMutableArray,用于 TableView 中的每个部分。当将另一个 SUPDataValue 对象添加到我的初始对象数组时,我切换回我的 TableView ,我想重新读取对象数组中的所有对象并查看这些对象是否存在于我的分层数组中.

我正在使用“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 的默认行为。

关于ios - 检查 NSArray 中是否存在唯一对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19814716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com