我试图将它们更改为 NSSet,然后制作一个可变副本。
keyIds = [[[NSSet setWithArray:keyIds] array]mutableCopy];
结果是这个错误:2012-09-27 19:57:36.465 BadgerNew[81030:1303] -[__NSSetI array]: unrecognized selector sent to instance 0x9f968b0
这是一件如此简单的事情,但我不知道有什么直接的方法可以做到这一点。
我试图将它们更改为 NSSet,然后制作一个可变副本。
keyIds = [[[NSSet setWithArray:keyIds] array]mutableCopy];
结果是这个错误:2012-09-27 19:57:36.465 BadgerNew[81030:1303] -[__NSSetI array]: unrecognized selector sent to instance 0x9f968b0
这是一件如此简单的事情,但我不知道有什么直接的方法可以做到这一点。
问题是在名为数组的 NSSet 上没有方法。
将 NSSet 转换为 NSArray 的一种方法是使用 allObjects 方法:
keyIds = [[[NSSet setWithArray:keyIds] allObjects] mutableCopy]
但是,您将失去最初使用 keyIds 的所有排序,因为 Set 本质上是没有排序的,因此如果是这种情况,您最好首先将 keyIds 存储为一个集合。
试试这个 -
NSSet *uniqueItems = [NSSet setWithArray:myArrayWithLotsOfDuplicates];
NSArray *newArrayWithUniqueItems = [NSArray arrayWithArray:[uniqueItems allObjects]];
它不会有你原来的顺序,但每个项目都是独一无二的......