从NSMutableArray中删除具有相同值的元素

san*_*edi 2 objective-c nsmutablearray nsobject

NSMutableArray包含一些字符串作为元素.其中一个元素在数组中的不同索引处重复多次.例如[@"", @"1,2,3",@"",@"5,3,2,1",@""].我想@""从可变数组中删除所有带有值的元素.我尝试了以下方法,但无法得到解决方案.

  1. 使用For循环:

    for(id obj in myMutableArray)
    {
        if([obj isEqualToString:@""])
        {
            [myMytableArray removeObject:obj];
        }
    } 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用虚拟可变数组调用 nextMutableArray

    for(id obj in myMutableArray)
    {
        if([obj isEqualToString:@""])
        {
            continue;
        }
        else [nextMutableArray addObject:obj];
    }
    
    Run Code Online (Sandbox Code Playgroud)

在这两种方式中,@""其他索引的elements()被删除但不在索引0(第一个对象).可能的原因是什么?有没有办法@""从可变数组中删除包含字符串的所有元素?

And*_*tta 6

一个选项是使用谓词过滤您的数组:

NSArray *someArray = @[@"", @"1,2,3", @"", @"5,3,2,1", @""];
NSLog(@"%@", someArray);
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF != ''"];
NSArray *filteredArray = [someArray filteredArrayUsingPredicate:predicate];
NSLog(@"%@", filteredArray);
Run Code Online (Sandbox Code Playgroud)