2014-01-03 3 views
-1

Так что я сейчас делаю калорийный трекер. В этом приложении вы вводите недавнюю трапезу, которую вы ели, и количество калорий в этой еде. Затем вы нажимаете кнопку «Добавить». Эта кнопка сохранит данные в TableView под названием HistoryTableViewController. Чтобы проверить, оставил ли человек пустое поле, у меня есть 3 «if statement». Один выглядит следующим образом:Как удалить определенный объект из массива

if ([[self.amountText.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] < 1) 
{ 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning!" message:@"You have not entered the amount of Calories!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
    [alert show]; 
    [amountHistory removeObjectAtIndex:0]; 

} 

Существует одна строка кода, что я знаю, что это неправильно, который является

[amountHistory removeObjectAtIndex:0]; 

Я не обязательно хочу, чтобы удалить первый объект на Tableview, я просто хотите, чтобы элемент не добавлялся.

Заранее спасибо.

EDIT:

добавить объект в массив в верхней части если заявления:

total+= self.amountText.text.intValue; 
self.totalLabel.text = [NSString stringWithFormat:@"%d", total]; 
NSNumber *calorieNumber = [NSNumber numberWithInt:self.amountText.text.intValue]; 
NSString *foodString = nameOfTheFood.text; 
NSString *historyString = [NSString stringWithFormat:@"%@ Calories in %@",  calorieNumber, foodString]; 
[amountHistory addObject:historyString]; 
+0

К сожалению, этот вопрос не имеет смысла. У вас есть кнопка добавления, но вы хотите удалить что-то из массива amountHistory. Что вы хотите удалить? –

+0

В какой момент вы добавляете элемент в массив? –

+1

Вы потрудились прочитать спецификацию для NSMutableArray? –

ответ

1

Похоже, вы думаете об этом от неправильного угла.

Вместо того, чтобы добавлять элемент в свой массив, а затем удалять его, если он недействителен, вы должны убедиться, что элемент добавлен только в том случае, если он действителен.

Итак, в вашем методе вы должны добавить только элемент в конце, после того, как все проверки пройдены. Вы должны добавить ранние return в свои if операторы, если какая-либо проверка завершится неудачей, чтобы вы не достигли кода, который добавляет элемент в массив.

+0

Ах ... да, это звучит лучше. Извините, я все еще пытаюсь понять, что такое эффективный разработчик. Думаю, я пойду с этим. – doc92606

0

Если вы хотите удалить последний элемент в использовании массива:

[amountHistory removeLastObject]; 

Но если ваша проблема заключается в том, что вы не хотите добавлять пустые элементы в массив, почему бы не проверить, пусты ли они перед их добавлением?

1

Ответ на вашу тему:

How to remove a specific object from an array 

является

[array removeObject:obj]; 

Заметит, что это использует isEqual сообщений на объекте для определения равенства. Если вам требуется конкретное равенство объекта, вместо этого используйте removeObjectIdenticalTo:.

Источник: Apple Docs on NSMutableArray

Смежные вопросы