web-dev-qa-db-ja.com

NULLおよび空白文字列をテストするNSPredicate

NSArrayがあり、nullまたはむしろ ''(空の文字列)を持つ文字列を除外する必要があります。それ、どうやったら出来るの?私はやってみました:

NSPredicate *predicateName = [NSPredicate predicateWithFormat:@"(name!=nil)"]; 

しかし、それはうまくいかないようです。または多分そうですが、異なる種類のnullがあります...

72
Doz

Core Dataを使用しない場合は、次のことができます。

NSPredicate *predicateName = [NSPredicate predicateWithFormat:@"name.length > 0"];

文字列が空の場合、これは失敗します(0 == 0)。同様に、namenilである場合、[nil length] == 0

145
Dave DeLong

私はこれがうまくいくと思う:

NSPredicate *predicateName = [NSPredicate predicateWithFormat:@"name!=nil AND name!=''"]; 
73
 NSPredicate *predicateName = [NSPredicate predicateWithFormat:@"name!=NULL"];
12
chroww

この述語は私のために働いた:

[NSPredicate predicateWithFormat:@"(%K== nil) OR %K.length == 0", @"imageUrl", @"imageUrl"]
7
Josip B.