0

我有一个名为 selectedUsers 的 NSMutableArray,我使用名为 addUser 的方法向其中添加对象。添加的对象通常是 PLManagedUser 类型(核心数据托管对象),尽管有时对象可能是字符串。无论如何,如果数组已经包含对象,我不想将它添加到数组中。这是代码:

- (void)addUser:(id)user withTitle:(NSString *)title {

    if (![_selectedUsers containsObject:user]) {
        [_selectedUsers addObject:user];
    }
}

我注意到,如果我尝试使用上述方法背靠背添加同一个用户,containsObject 会捕获它,并且不会添加重复项。但是,如果我在中间添加了其他对象之后添加了相同的用户(具有相同的内存地址),则会添加副本。

每次我添加一些东西以确认重复的对象在数组中时,我都会打印数组的内容。

我的问题是,有什么明显的原因说明 containsObject 不能一直在这里工作吗?

4

1 回答 1

3

您需要为一个对象提供将自己标识为与同一类的另一个对象相同的能力,为此您需要实现isEqual:andhash方法。

话虽如此,您问题中的解释与我的预期相反。

于 2013-07-03T15:21:30.943 回答