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 に答える