Iphone 如何在NSArray字典中查找(而不是删除)重复项?

Iphone 如何在NSArray字典中查找(而不是删除)重复项?,iphone,objective-c,arrays,Iphone,Objective C,Arrays,标题几乎说明了这一切,但只是澄清一下:我有一个包含几个NSMutableArray的NSMutableDictionary。我想做的是找到多个数组中存在的任何值(单个数组中不会有任何重复项)并返回该值。有人能帮忙吗?提前谢谢 编辑:为了清晰起见,我将指定一些变量: LinesTableDictionary包含一个Line对象列表(这是我的一个自定义NSObject子类) pointsArray是每个Line对象中的一个数组,包含我试图搜索的值 基本上,我是想找出哪些线条有共同点(我的应用程序是基

标题几乎说明了这一切,但只是澄清一下:我有一个包含几个NSMutableArray的NSMutableDictionary。我想做的是找到多个数组中存在的任何值(单个数组中不会有任何重复项)并返回该值。有人能帮忙吗?提前谢谢

编辑:为了清晰起见,我将指定一些变量:
LinesTableDictionary包含一个Line对象列表(这是我的一个自定义NSObject子类)

pointsArray是每个Line对象中的一个数组,包含我试图搜索的值

基本上,我是想找出哪些线条有共同点(我的应用程序是基于几何的)


如果重复的意思是将
YES
返回到
isEqual:
您可以首先创建一个包含所有元素的NSSet(根据定义,NSSet不能有重复的元素),那么这应该是可行的:

现在,通过元素循环并检查它们是否在多个数组中

NSMutableSet* allDuplicateElements = [[NSMutableSet alloc] init];
for (NSObject* element in allElements) {
    NSUInteger count = 0;
    for (NSArray* array in [dictionary allValues]) {
        if ([array containsObject:element]) count++;
        if (count > 1) {
            [allDuplicateElements addObject:element];
            break;
        }
    }
}

然后你就有了你的重复元素,别忘了释放
等位基因
所有重复元素

,那将是一组数组,而不是数组中的一组元素。很抱歉,我原来的问题用错了词,我的意思是这段代码不起作用。我已经修改了我的问题来纠正我的错误。你能告诉我如何编辑你的代码来工作吗?谢谢你的快速回复!但是,我相信您误解了我的问题(或者我误解了您的代码)。我编辑了我的问题以澄清我的问题,非常感谢你的回答和对我错误的容忍!我可以看看
行的接口定义吗?@interface Lines:NSObject{NSMutableArray*pointsArray;}并且您是否将某些键设置为不同的行对象?键是每个行对象的标识符,键的值是行对象本身更新我的帖子以处理行对象
NSMutableSet* allElements = [[NSMutableSet alloc] init];
for (NSArray* array in [dictionary allValues]) {
    [allElements addObjectsFromArray:array];
}
NSMutableSet* allDuplicateElements = [[NSMutableSet alloc] init];
for (NSObject* element in allElements) {
    NSUInteger count = 0;
    for (NSArray* array in [dictionary allValues]) {
        if ([array containsObject:element]) count++;
        if (count > 1) {
            [allDuplicateElements addObject:element];
            break;
        }
    }
}