从数组中删除重复项并保留最后一次出现 - iOS

Remove duplicate items from array and keep last occurrences - iOS

我有一个数组,如

(一、二、一、二、三、一、三、二)

我想删除重复项,只保留最后一次出现的项目。我的结果数组应该是:

(一、三、二)

我通过 [NSOrderedSet orderedSetWithArray:array] 实现了删除重复项,但这会保留首次出现的项目。它给出的结果是(一,二,三)即第一个索引,第二个索引和第五个索引。

我怎样才能只保留最后一次出现的结果,所以我的结果应该是第 6 个索引、第 7 个索引和第 8 个索引?

谢谢!

@implementation NSArray (Extended)

- (NSArray *)arrayByRemovingDuplicatesMaintainingOrder
{
    NSMutableSet *arrayObjects = [NSMutableSet set];
    NSMutableArray *result = [NSMutableArray array];

    for (id obj in self)
    {
        if (![arrayObjects containsObject:obj])
        {
            [result addObject:obj];
            [arrayObjects addObject:obj];
        }
    }

    return result;
}

@end

感谢@Avi 和@Cristik(问题的评论者)的正确指导,实施了以下解决方案及其工作:

NSMutableArray *array = [NSMutableArray arrayWithCapacity:[originalArray count]];
NSEnumerator *enumerator = [originalArray reverseObjectEnumerator];

for (id element in enumerator) 
{
   [array addObject:element];
}

NSOrderedSet *orderedSet =  [NSOrderedSet orderedSetWithArray:array];

/* orderedSet now has has the desired result */