2011-09-10 20 views
64

私はNSArrayを持っていて、nullまたはむしろ「空の文字列」を持つ文字列をフィルタリングする必要があります。それ、どうやったら出来るの?私はやってみた:NSPredicateで空文字列と空文字列をテストする

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

しかし、それは動作していないようです。それともあなたはコアデータを使用しない場合は、あなたができることはありませんが、nullのさまざまな種類があります...

答えて

130

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

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

+0

をそれでは解決メイトは何ですか?これは実際に私のために働くように見える最初の答えとしてどこに。文字列が空の場合は、長さ= 0にしないでください。それはnullではありません – Doz

+0

@Doron解決策は私が示唆した述語を使用することです。 –

+0

申し訳ありませんが、私はまだ特定のフィールドに(null)を取得します。コードの後ろにあなたのコメントが何を意味するか分かりません。 == 0だからあなたは0の値を得ていると言っているので、テストする必要があるすべてが> 0になります。なぜなら私はまだnullを取得しているからです。 – Doz

63

私は、これは動作するはずだと思う:

NSPredicate *predicateName = [NSPredicate predicateWithFormat:@"name!=nil AND name!=''"]; 
+0

これは私の場合にうまくいきました。ありがとうございました。 – Isuru

+2

これは、Realmデータベース述語も検索します。ありがとうございました。 – mtb

5

この述語は私の仕事:

[NSPredicate predicateWithFormat:@"(%K== nil) OR %K.length == 0", @"imageUrl", @"imageUrl"] 
10
NSPredicate *predicateName = [NSPredicate predicateWithFormat:@"name!=NULL"]; 
関連する問題