运维开发网

objective-C语言 从NSMutableArray中删除重复项

运维开发网 https://www.qedev.com 2020-05-14 19:12 出处:网络 作者:运维开发网整理
我有从移动数组中删除重复对象的问题. 我已经尝试了这些: noDuplicates = _personalHistory.personalHistory; for (int i=[noDuplicates count]-1; i>0; i--) { if ([noDuplicates indexOfObject: [noDuplicates objectAtIndex: i]]<i)
我有从移动数组中删除重复对象的问题.

我已经尝试了这些:

noDuplicates = _personalHistory.personalHistory;

for (int i=[noDuplicates count]-1; i>0; i--) {
    if ([noDuplicates indexOfObject: [noDuplicates objectAtIndex: i]]<i)
        [noDuplicates removeObjectAtIndex: i];
}


for (PersonalHistory_artikels *e in _personalHistory.personalHistory) {
    if (![noDuplicates containsObject:e]) {
        NSLog(@"Dubplicates");
        [noDuplicates addObject:e];
    }
}


for (i=0; i<_personalHistory.personalHistory.count; i++) {
    PersonalHistory_artikels *test = [_personalHistory.personalHistory objectAtIndex:i];
    for (j=0; j<_personalHistory.personalHistory.count; j++) {
        PersonalHistory_artikels *test2 = [_personalHistory.personalHistory objectAtIndex:j];
        if (! [test.nieuwsTITLE_personal isEqual:test2.nieuwsTITLE_personal]) {
            NSLog(@"Add test = %@", test.nieuwsTITLE_personal);
            [noDuplicates addObject:test];
        }
    }
}

但上面没有一个给我正确的阵列.最后一个是最好的,但它仍显示重复值.有人可以帮我解决这个问题吗?

非常感谢你.

只需将数组转换为NSSet,然后再返回.一个集合不能设计重复.

编辑:

请注意,集合没有排序顺序.因此,您可以更便宜并放弃订单,或者进行稍微昂贵的操作但保留订单.

NSArray *hasDuplicates = /* (...) */;
NSArray *noDuplicates = [[NSSet setWithArray: hasDuplicates] allObjects];

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号