我有一个扩展NSObject
的自定义类。我正在维护这个类对象的NSMutableArray
。情况就是这样,
customObject-class {
NSString *name;
int ID;
.....and many other properties;
}
customObjectsArray [
customObject1,
customObject2,
...etc
]
现在我正在尝试使用filterUsingPredicate删除具有nil名称的对象,如下所示,但它返回的对象很少或没有,而我知道有数百个名称不为nil或为空的对象。有人可以告诉我这里可能有什么问题。
[customObjectsArray filterUsingPredicate:[NSPredicate predicateWithFormat:@"name != nil"]];
答案 0 :(得分:5)
为什么你不这样做:
NSMutableArray *array=...;
[array filterUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
CustomObject *customObject=(CustomObject *) evaluatedObject;
return (customObject.name!=nil);
}]];
答案 1 :(得分:0)
当我回复@rdelmar时,我发现了一个问题。在实际初始化customObject1的数据之前调用此谓词。我应检查数据标志的状态,该数据标志表示已为此特定对象初始化数据,然后应用过滤器。有效。如果没有初始化数据,那么所有对象的名称都是正常的!