Вот несколько проблем, которые, вероятно, сбивают вас с толку:
Вы инициализируете уже выделенный массив с помощью вспомогательного конструктора, вам следует выбрать одну из пары alloc
/ init
или вспомогательный конструктор:
[[NSMutableArray alloc] initWithObjects:...]
или
[NSMutableArray arrayWithObjects:...]
Ваши строки удаления пытаются удалить строку литерал . Хотя ваш массив содержит строку экземпляров , которые содержат те же значения , что и строки, которые вы пытаетесь удалить, они не являются точными точными экземплярами строки. Вам нужно использовать [stringVar isEqualToString:otherStringVar]
для сравнения значений вместо их ссылок:
if ([randomN isEqualToString:@"a"])
вместо:
if (randomN == @"a")
Кроме того, ваш оператор else
будет запускать каждый раз по тем же причинам, что и вторая проблема. Даже если вы используете правильные сравнения строк, ваша логика, вероятно, отключена, если вы пытаетесь выполнить только один из этих 4 блоков кода. Для этого каждому из if
s после первого требуется else
, например:
if (/* test 1 */) {
}
else if (/* test 2 */) {
}
else if (/* test 3 */) {
}
else {
// chained else's make only one block able to execute
}
вместо:
if (/* test 1 */) {
}
if (/* test 2 */) {
}
if (/* test 3 */) {
}
else {
// this else only applies to the LAST if!
}