1

我有一个自定义类扩展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"]];
4

2 回答 2

5

你为什么不试试这样:

NSMutableArray *array=...;
[array filterUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
    CustomObject *customObject=(CustomObject *) evaluatedObject;
    return (customObject.name!=nil);
}]];
于 2012-12-16T23:21:55.290 回答
0

当我回复@rdelmar 时,我发现了一个问题。在 customObject1 的数据实际初始化之前调用了该谓词。我应该检查数据标志的状态,表明数据已为此特定对象初始化,然后应用过滤器。有效。如果数据未初始化,则所有对象的名称都为 nil!

于 2012-12-20T11:39:38.560 回答