【问题标题】:I can't remove an object from a NSMutableArray我无法从 NSMutableArray 中删除对象
【发布时间】:2012-02-06 08:32:54
【问题描述】:

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

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

我查过,假名中的 lastObjet 是 CandidateProxy 的同一个对象。但它没有被删除。

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

谢谢

【问题讨论】:

  • 您提到过假名中的lastObjet 是candidateProxy 的同一个对象。如果 lastObject 是 CandidateProxy 的元素(而不是 CandidateProxy 本身),它将被移除。

标签: objective-c arrays cocoa nsarray nsarraycontroller


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    您不能从NSArray 中删除对象,您只能从NSMutableArray 中删除它

    编辑

    willChangeValueForKey:之前试试下面的语句

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

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

    【讨论】:

      猜你喜欢
      • 2011-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多