На первый взгляд, ответы Винсента и Рича верны.
Однако в исходном вопросе есть концептуальная проблема, которая не была решена.
А именно, что «членство в массиве» через indexOfObject:
(или containsObject:
в наборе) в конечном итоге достигается путем сравнения двух объектов с использованием isEqual:
.
Если isEqual:
вернет ДА, то, черт побери, эти два объекта, скорее всего, будут функционально идентичны в вашем коде, иначе у вас возникнут другие, значительно более серьезные, проблемы в вашем дизайне и реализации.
Таким образом, реальный вопрос должен звучать так: «Как я могу определить, есть ли уже объект в массиве, и не добавить его?» и ответ Рича и Винсента все еще верен.
т.е. вам нужно только проверить наличие и не предпринимать никаких действий.
(Обратите внимание, что существуют эзотерические ситуации, когда замена на самом деле оправдана, но оба они действительно эзотерические и обычно не используются в контексте изменяемой коллекции)