2011-09-10 128 views
64

我有一个NSArray,并需要过滤掉任何字符串为空或相反,有''(空字符串)。我怎么做?我曾尝试过:NSPredicate测试NULL,并空白字符串

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

但这似乎并不奏效。或者,也许它,但也有不同种类的空的...

回答

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.为1.因为我仍然越来越(空) – 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"];