任何内置函数检查“数组的所有元素是否包含[NSNULL null]”类型对象?

时间:2011-10-06 08:54:07

标签: ios objective-c iphone nspredicate

我有一个NSMutableArray,它包含100个[NSNULL null]类型对象。

但有时它包含1个有效对象(可能是NSString)和99个[NSNULL null]类型对象(可能因情况而异)。

我可能知道是否有任何内置函数要检查,数组的所有元素是否包含[NSNULL null]类型对象?(或者它不包含任何一个有效对象。)

感谢。

注意:不使用循环语句迭代所有元素。

2 个答案:

答案 0 :(得分:2)

您可以使用 NSPredicate 来实现此目标。

NSMutableArray *allObjects = /* Assume this is your main array */;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self = nil"];
NSArray *nullObjects = [allObjects filteredArrayUsingPredicate:predicate];

if ([nullObjects count] == [allObjects count]) {
    // All objects are [NSNull null]
} else {
    // Some objects are of different types(may be NSString)
}

答案 1 :(得分:0)

假设你知道你正在寻找的NSString对象,你可以做到这一点非常简单:

NSString *needle = /*The NSString you are looking for*/;
NSMutableArray *allObjects = /*You mutable array*/;

BOOL contains = [allObjects containsObject:needle];

非常简单,但它假设您知道您正在寻找的对象,并且因为您没有在问题中指出这一点,这个答案可能对某人有所帮助。