2012-02-06 114 views
1

我不明白为什么不从NSMutableArray中删除对象。这是代码:我无法从NSMutableArray中删除对象

[self willChangeValueForKey:@"candidatesProxy"]; 
[candidatesProxy removeObject:[[pseudonymsArrayController selectedObjects] lastObject]]; 
[self didChangeValueForKey:@"candidatesProxy"]; 

我检查过,并且在化名中的lastObjet是candidatesProxy的同一个对象。但它不会被删除。

是不是因为对象被复制到不同的内存位置,所以我实际上有2个对象,而不是一个?

感谢

+0

你已经提到过,在化名中的lastObjet是candidateProxy的同一个对象。如果lastObject是candidatesProxy的元素(而不是candidatesProxy本身),它将被删除。 – Ilanchezhian 2012-02-06 08:39:02

回答

1

不能从NSArray删除对象,你只能从NSMutableArray

编辑删除

willChangeValueForKey:

NSLog(@"Array : %@", candidatesProxy); 
NSLog(@"Element : %@",[[pseudonymsArrayController selectedObjects] lastObject]); 

和检查刚刚尝试下面的语句是否为lastObject ele阵列中存在。

+0

对不起,这是一个NSMutableArray ... – aneuryzm 2012-02-06 11:10:24

3

当您使用removeObject:方法时,首先通过将indexOfObject:发送到该数组来确定对象的索引,然后删除该索引处的对象。

为了使其工作,请确保您的自定义对象类覆盖-(BOOL)isEqual:

或者,使用索引删除对象,但首先需要确定它。