我无法从NSMutableArray中删除对象

时间:2012-02-06 08:32:54

标签: objective-c arrays cocoa nsarray nsarraycontroller

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

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

我已经检查过,假名中的lastObjet与candidateProxy的对象相同。但它没有被删除。

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

由于

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

您无法从NSArray删除对象,只能从NSMutableArray

删除它

修改

willChangeValueForKey:

之前尝试以下语句
NSLog(@"Array : %@", candidatesProxy);
NSLog(@"Element : %@",[[pseudonymsArrayController selectedObjects] lastObject]);

并检查数组中是否存在lastObject元素。