我在 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/