替换数组中的对象不起作用,但添加一个新对象可以

Replacing Object in Array doesn't work, but Adding a new one Does

我有一个函数旨在获取一个对象,如果数组中已存在具有相同标识符字符串的对象,则更新它,如果不存在,则添加该对象。添加部分有效,但由于某种原因,更新功能会丢失数据。

这是我的代码:

- (void)addOrUpdateGroup:(Object *)myObject
{
    for (H2Group *existingObject in objectsArray) {
        if ([existingObject.identifier isEqualToString:myObject.identifier]) {
            [objectsArray replaceObjectAtIndex:[objectsArray indexOfObject:existingObject] withObject:myObject];
            return;
        }
    }
    [objectsArray addObject:myObject];    
}

当使用数组中有对应对象的对象调用此方法时,它会执行,但似乎不会替换该对象。

使用断点和日志,我确定:

如有任何想法,我们将不胜感激。

像这样的东西更高效、更安全,而且(在我看来)更具可读性:

- (void)addOrUpdateGroup:(Object *)myObject {
    NSUInteger idx = [objectsArray indexOfObjectPassingTest:^(Object *object, NSUInteger idx, BOOL *stop) {
        return [object.identifier isEqualToString:myObject.identifier];
    }];

    if (idx != NSNotFound) {
        [objectsArray replaceObjectAtIndex:idx withObject:myObject];
    } else {
        [objectsArray addObject:myObject];    
    }
}

它假定objectsArray只包含Object