在NSMutableArray中搜索对象并更改该对象的值

时间:2014-09-05 15:09:47

标签: objective-c nsmutablearray nspredicate for-in-loop

我有一个项目,用户可以在其中添加一些项目到TableView。我的此TableView的数据源是具有2个属性的对象NSString * nameOfItem 和NSNumber * numberOfItem 。是否有可能检查我的NSMutableArray,如果它包含字符串 @&#34; someString&#34; 作为属性 nameOfItem ,如果是,则更改< strong> numberOfItem +1?

更新

我尝试用for(... in ...)来做它但是当我的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];
}

我想创建一个新的,如果还没有在该列表中。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

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