2014-09-05 76 views
0

我有项目,用户可以在TableView中添加一些项目。为此我的TableView的数据源与2个属性的NSString * nameOfItem和NSNumber的* numberOfItem对象。任何可能性,检查我的NSMutableArray如果它包含字符串@“someString”财产nameOfItem,如果是比变化numberOfItem +1?在NSMutableArray中搜索对象并更改该对象的值

UPDATE:

我尝试了做(... ...中),但是当我在我的NSMutableArray只有一个对象,它工作得。如果我有更多的东西都有它创建一个新的对象,并比变化值++旧之一:

enter image description here

下面是一些代码是我的尝试:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
NSString*nameToCheck = [NSString stringWithFormat:@"%@", [self.ivc.objects objectAtIndex:indexPath.row]]; 
for (Items *itemNamed in self.ivc.shoppingList.items) { 
    if ([itemNamed.nameOfItem isEqualToString:nameToCheck]) { 
     [itemNamed setNumberOfItem:[NSNumber numberWithInt:[itemNamed.numberOfItem integerValue]+1.0]]; 
} else { 
       Items *item = [Items new]; 
       [item setNameOfItem:name]; 
       [item setNumberOfItem:@(1)]; 
       [self.ivc.shoppingList.items insertObject:item atIndex:0]; 
} 

我想创建只有在尚未列入该列表的情况下才有新的。 任何帮助表示赞赏。

+0

这段代码给你什么结果? – rdelmar 2014-09-05 15:23:16

+0

@rdelmar,如果我只有一个对象在那shoppingList.items然后它改变numberOfItem值++ – Mayo323 2014-09-05 15:27:33

+0

什么是shoppingList的结构?从你的文章中不清楚,为什么你要通过self.ivc.shoppingList.items迭代,而不是self.ivc.shoppingList。 – rdelmar 2014-09-05 15:35:45

回答

1

我不知道这样的事情,但你可以使用NSDictionary而不是NSArray使用name属性作为键。如果你不想这样做,你可以对数组进行排序并对元素进行二进制搜索。

+0

@lulian Popescu,对不起,我不想搜索关键字只是将字符串保存为Item对象中的属性nameOfItem :) – Mayo323 2014-09-05 15:23:51

+0

我认为我发现了代码中的一个小错误(抱歉,如果我错了)。当你检查名称是否相等时,你正在用名称检查itemNamed.nameOfItem,我认为这里应该是nameToCheck – 2014-09-05 15:34:19

+0

@lulian Popescu,是的,这是我的错。已为'NSDictionary'更新了 – Mayo323 2014-09-05 15:41:04