如何删除特定的数组值而不是对象?

How to Remove the particular array value not an object?

这是我的数组包含的值:

(
        {
        yes = 0;
    },
        {
        yes = 1;
    },
        {
        yes = 2;
    },
        {
        yes = 3;
    },
        {
        yes = 4;
    }
)

现在我想删除 yes=1;

这是我的代码

-(void)touchup:(UIButton*)click
{


    dicButtonState=[[NSMutableDictionary alloc]init];


    if(click.selected==NO)
    {
        click.backgroundColor=[UIColor colorFromHexString:@"#ffc400"];
         click.selected=YES;



      [dicButtonState setValue:@(click.tag) forKey:@"yes"];
//        [arrButtonState addObject:btntag];

       [arrButtonState addObject:dicButtonState];

    }
#pragma mark deleting product on user deselection
    else
    {

        click.backgroundColor=[UIColor grayColor];
        click.selected=NO;


    }

}

这是我维护用户选择按钮状态的代码,我将这些值存储在数组中。

我必须如何删除它,请任何人帮助我这样做..

最简单的方法是找到正确的字典,然后使用 [array removeObject:foundObject];

要找到合适的对象,您有几种选择。最简单的大概就是

NSDictionary *foundObject;
[array enumerateObjectsUsingBlock:^(NSDictionary *d, NSUInteger idx, BOOL *stop) {
    if ([d[@"yes"] isEqual:@(1)]) {
        *stop = YES;
        foundObject = d;
    }
}];

[array removeObject:foundObject];

这假设 array 是可变的。如果不是,用这些行包装上面的代码(根据需要调整变量名称):

NSMutableArray *array = [originalArray mutableCopy];

originalArray = [array copy];

P.S。您还可以保存索引而不是对找到的对象的引用,然后使用 [array removeObjectAtIndex:foundIndex]。这是一个偏好问题。对于从较小的数组中删除单个元素,性能特征无关紧要。

如果将 yes 标志替换为任何其他 value,则可以通过 NSPredicate 来完成.

说,你的数据是这样的

NSArray *dataArray = @[@{@"value":@(0)},@{@"value":@(1)},@{@"value":@(2)},@{@"value":@(3)},@{@"value":@(4)}];

然后就可以使用NSPredicate来过滤这个字典数组了。

NSPredicate *predicate=[NSPredicate predicateWithFormat:@"value != %@",@(1)];
NSArray *filteredArray = [dataArray filteredArrayUsingPredicate:predicate];