我有一个名为'arrAllCustomer'
的字典数组:
NSMutableArray *array = [NSMutableArray arrayWithArray:[[NSSet setWithArray:arrAllCustomer] allObjects]];
执行上面的行后,数组顺序会改变。
任何人都知道订单变更的原因吗?
答案 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
}
}