如何从数组中删除特定对象

时间:2014-01-03 23:02:59

标签: ios objective-c uitableview nsarray

所以我现在正在制作卡路里追踪器。在这个应用程序中,您输入您最近吃的饭,以及该餐中的卡路里量。然后按“添加”按钮。此按钮将数据保存到名为HistoryTableViewController的TableView中。要检查此人是否将文本字段留空,我有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上的第一个对象,我只是想确保该项没有被添加。

提前致谢。

编辑:

我在if语句的顶部向数组中添加了一个对象:

 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];

4 个答案:

答案 0 :(得分:1)

你的主题的答案:

How to remove a specific object from an array

[array removeObject:obj];

注意,这会使用对象上的isEqual消息来确定相等性。如果您希望特定对象相等,请改用removeObjectIdenticalTo:

来源:Apple Docs on NSMutableArray

答案 1 :(得分:1)

听起来你是从错误的角度思考它。

除了将项目添加到数组中,然后将其删除(如果它无效),您应确保仅在项目有效时添加该项目。

因此,在您的方法中,您只需在所有验证通过后在最后添加项目。如果任何验证失败,您可以在return语句中添加早期if,这样就无法获得将项添加到数组的代码

答案 2 :(得分:0)

如果您要删除数组中的最后一项,请使用:

[amountHistory removeLastObject];

但是如果您的问题是您不想在数组中添加空白项目,那么在添加它们之前为什么不检查它们是否为空?

答案 3 :(得分:-1)

如果您使用的是NSMutableArray,则只能从数组中删除对象。阅读NSMutableArray Class Reference