ios - 从 NSMutableArray 中删除对象?

标签 ios objective-c search nsstring nsmutablearray

我在 ViewDidLoad 方法中有一个包含以下元素的数组

inputArray = [NSMutableArray arrayWithObjects:@"car", @"bus", @"helicopter", @"cruiz", @"bike", @"jeep", nil];

我有另一个 UITextField 用于搜索元素。因此,一旦我在 UITextField 中键入一些内容,我想检查该字符串是否存在于“inputArray”中。如果它与 inputArray 中的元素不匹配,则从 inputArray 中删除相应的元素。

 for (NSString* item in inputArray)
   {
        if ([item rangeOfString:s].location == NSNotFound) 
        {
            [inputArray removeObjectIdenticalTo:item];//--> Shows Exception
            NSLog(@"Contains :%@",containsAnother);
        }

  }

但此代码显示异常,与“removeobject:”相关的内容

异常:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSCFConstantString rangeOfString:options:range:locale:]: nil argument'
*** First throw call stack:
`

最佳答案

在快速枚举中,您可以修改集合。

枚举器对象变为常量且不可变。

如果你想对数组进行更新

你应该喜欢这个:

NSMutableArray *inputArray = [NSMutableArray arrayWithObjects:@"car", @"bus", @"helicopter", @"cruiz", @"bike", @"jeep", nil];
NSString *s=@"bus";

for (int i=inputArray.count-1; i>-1; i--) {
    NSString *item = [inputArray objectAtIndex:i];
    if ([item rangeOfString:s].location == NSNotFound) {
        [inputArray removeObject:item];
    }
}

编辑:

上面的工作类似于这样:

NSArray *array=[inputArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF CONTAINS[c] %@",s]]; 

关于ios - 从 NSMutableArray 中删除对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16015927/

相关文章:

ios - swift ios9 : if tab already selected, 单击当前选项卡时将其切换到另一个选项卡

ios - 向左滑动删除单元格在 ios 8 中无法正常工作,但在 ios 7 中有效

c - 在大文件中进行搜索的最佳方法是什么?

php - 如何使用 php 制作搜索结果详细信息页面

ios - CLLocationManager.requestLocation() 大约需要 10 秒

objective-c - 如何在 block 中使用自定义类型的参数

ios - 什么时候释放自动释放对象?

ios - 自动布局错误

php - 在 MySQL 表中查找新条目

ios - 是否可以通过IPA文件永久安装应用程序?