Метод containsObject:
обычно дает вам то, что вы спрашиваете - в то время как его имя звучит так, будто вы запрашиваете конкретный экземпляр (то есть два объекта с одинаковым семантическим значением не соответствует) на самом деле он вызывает isEqual:
на объектах, поэтому тестирует по значению .
Если вы хотите индекс предмета, как подсказывает ваш заголовок, используйте indexOfObject:
, он также вызывает isEqual:
, чтобы найти совпадение.
valueForKey:
для случаев, когда у вас есть массив словарей; он ищет ключ в каждом словаре и возвращает массив результатов.