ios - 在 Objective-C 中从 NSMutableArray 中删除重复值的最佳方法是什么?

标签 ios objective-c nsmutablearray

在 Objective-C 中从 NSMutableArray 中删除重复值(NSString)的最佳方法?

这是最简单和正确的方法吗?

uniquearray = [[NSSet setWithArray:yourarray] allObjects];

最佳答案

如果您不担心对象的顺序,您的 NSSet 方法是最好的,但话又说回来,如果您不担心顺序,那么为什么不存储以 NSSet 开头?

我在 2009 年写了下面的答案; 2011 年,Apple 将 NSOrderedSet 添加到 iOS 5 和 Mac OS X 10.7。原来的算法现在变成了两行代码:

NSOrderedSet *orderedSet = [NSOrderedSet orderedSetWithArray:yourArray];
NSArray *arrayWithoutDuplicates = [orderedSet array];

如果您担心顺序并且您在 iOS 4 或更早版本上运行,请遍历数组的副本:

NSArray *copy = [mutableArray copy];
NSInteger index = [copy count] - 1;
for (id object in [copy reverseObjectEnumerator]) {
    if ([mutableArray indexOfObject:object inRange:NSMakeRange(0, index)] != NSNotFound) {
        [mutableArray removeObjectAtIndex:index];
    }
    index--;
}
[copy release];

关于ios - 在 Objective-C 中从 NSMutableArray 中删除重复值的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1025674/

相关文章:

objective-c - 释放按引用返回的 NSString 会导致崩溃

objective-c - 我怎样才能更改此代码以使其不违反 MVC 原则?

android - Android 中 Objective C 的共享首选项

objective-c - 绘制矩形看到空数组

ios - 在不使用 for 循环的情况下更新字典数组中的键值对

ios - GCDWebServer - 文档中的静态文件

ios - 是否可以在没有支付Apple开发人员帐户的情况下将其添加为Enterprise Apple开发人员团队的成员?

ios - 为什么 XCTest 在 UITableViewCell 中公开一个随机的 otherElement? (并表现出其他不一致之处)

objective-c - 类方法中的 NSMutableArray

ios - Swift 自定义字体 Xcode