这是我的数组包含的值:
(
{
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;
}
}
这是我维护用户选择按钮状态的代码,我将这些值存储在数组中。
我如何删除它,请任何人帮我这样做..
答案 0 :(得分:1)
最简单的方法是找到正确的字典,然后使用[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]
。这是一个偏好问题。为了从小阵列中移除单个元素,性能特征无关紧要。
答案 1 :(得分:1)
如果您将是标记替换为任何其他值,则可以通过 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];