订单改变我有字典的阵列称为'arrAllCustomer'
:“的NSSet”在Objective-C
NSMutableArray *array = [NSMutableArray arrayWithArray:[[NSSet setWithArray:arrAllCustomer] allObjects]];
上面的行执行后,将阵列顺序被改变。
任何人都可以知道为什么订单更改?
订单改变我有字典的阵列称为'arrAllCustomer'
:“的NSSet”在Objective-C
NSMutableArray *array = [NSMutableArray arrayWithArray:[[NSSet setWithArray:arrAllCustomer] allObjects]];
上面的行执行后,将阵列顺序被改变。
任何人都可以知道为什么订单更改?
NSSet
不应保留订单。
的NSSet中, 的NSMutableSet ,和 NSCountedSet 类声明的编程接口到无序集合对象。
如果要保留对象的顺序,与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
}
}
如果我有重复记录,我该怎么办? –
您可以删除维护订单的重复记录 – sasquatch
“有人知道为什么订单更改吗?” - 因为'NSSet'没有任何顺序。保留元素顺序的唯一容器'NSArray' –
由于NSSet是无序的 – sasquatch
为了维持顺序,您需要使用Array。 –