'的NSSet' Objective-C中的订单更改

时间:2017-07-27 09:38:15

标签: ios objective-c nsset

我有一个名为'arrAllCustomer'的字典数组:

NSMutableArray *array = [NSMutableArray arrayWithArray:[[NSSet setWithArray:arrAllCustomer] allObjects]];

执行上面的行后,数组顺序会改变。

任何人都知道订单变更的原因吗?

1 个答案:

答案 0 :(得分:2)

NSSet不应保留订单。

来自Apple Doc

  

NSSet,   的NSMutableSet   ,和   NSCountedSet    classes将编程接口声明为无序对象集合。

如果您想保留对象的顺序,请使用NSArray

  

NSArray及其子类   NSMutableArray里    管理名为数组的有序对象集合。 NSArray创建静态数组,NSMutableArray创建动态数组。当需要有序的对象集合时,可以使用数组。

如果要从数组中删除重复的对象,可以自己编写函数。摘自here

的示例
extension Array where Element: Equatable {
/// Array containing only _unique_ elements.
var unique: [Element] {
    var result: [Element] = []
    for element in self {
        if !result.contains(element) {
            result.append(element)
        }
    }

    return result
}
}