2015-11-12 28 views
0

这是我的数组包含的值:如何删除特定的数组值而不是对象?

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

现在我想是除去= 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

这是一个'NSDictionaries'数组吗? – Fonix

+0

@Fonix是..... –

+0

你是如何创建这个数组的?请添加一些代码 – ZeMoon

回答

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

您可以通过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]; 
相关问题