如何根据项目内容从NSArray中删除项目

时间:2013-12-02 21:17:52

标签: ios objective-c nsarray nspredicate

我正在创建NSStrings的NSArray,但是输入的一个数组是一组引号

""

我想知道从我的数组中排除这些,我尝试使用谓词但它不起作用。

这就是我的代码。

NSString *tempSymbolsString = [tempAxesDictionary objectForKey:@"Symbols"];
        NSArray *tempSymbolsArray = [tempSymbolsString componentsSeparatedByString:@";"];
        tempSymbolsArray = [symbolsArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF != """""]];
        NSLog(@"%@", tempSymbolsArray);

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

实际上甚至比这更简单。由于您只在数组中获得了字符串,因此请创建一个可变副本并删除所有出现的""。也许是这样的事情:

NSMutableArray *temp = [tempSymbolsArray mutableCopy];
[temp removeObject:@"\"\""];

这是有效的,因为removeObject:会通过isEqual:比较对象并删除所有匹配项。

答案 1 :(得分:0)

自己动手:

NSString *tempSymbolsString = tempAxesDictionary[@"Symbols"];
NSMutableArray *symbolsArray = [[tempSymbolsString componentsSeparatedByString:@";"] mutableCopy];
for (NSUInteger i = symbolsArray.count; i > 0; i--) {
    if ([symbolsArray[i - 1] isEqualToString:@"\"\""]) {
        [symbolsArray removeObjectAtIndex:i - 1];
    }
}

最后,symbolsArray将包含除""匹配的所有值。

BTW - 您的原始谓词可能需要一堆转义:

[NSPredicate predicateWithFormat:@"SELF != \"\\\"\\\"\""]