-1

我试图将它们更改为 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

这是一件如此简单的事情,但我不知道有什么直接的方法可以做到这一点。

4

2 回答 2

4

问题是在名为数组的 NSSet 上没有方法。

将 NSSet 转换为 NSArray 的一种方法是使用 allObjects 方法:

keyIds = [[[NSSet setWithArray:keyIds] allObjects] mutableCopy]

但是,您将失去最初使用 keyIds 的所有排序,因为 Set 本质上是没有排序的,因此如果是这种情况,您最好首先将 keyIds 存储为一个集合。

于 2012-09-27T13:19:31.713 回答
1

试试这个 -

NSSet *uniqueItems = [NSSet setWithArray:myArrayWithLotsOfDuplicates];
NSArray *newArrayWithUniqueItems = [NSArray arrayWithArray:[uniqueItems allObjects]];

它不会有你原来的顺序,但每个项目都是独一无二的......

于 2012-09-27T13:22:58.377 回答