Любые встроенные функции для проверки типа объекта «Все элементы массива содержит [NSNULL null]» или нет? - PullRequest
1 голос
/ 06 октября 2011

У меня есть NSMutableArray, который содержит 100 объектов типа [NSNULL null].

Однако иногда он содержит 1 допустимый объект (это может быть NSString) и 99 объектов типа [NSNULL null] (может варьироватьсяв зависимости от ситуации).

Могу ли я знать, есть ли какие-либо встроенные функции для проверки, все элементы массива содержат объект типа [NSNULL null] или нет? (или он не содержит каких-либо допустимых объектов.)

Спасибо.

Примечание: без итерации всех элементов с помощью операторов цикла.

Ответы [ 2 ]

2 голосов
/ 06 октября 2011

Вы можете использовать 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)
}
0 голосов
/ 06 октября 2011

Предполагая, что вы знаете объект NSString, который вы ищете, вы можете сделать это очень просто:

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

BOOL contains = [allObjects containsObject:needle];

Действительно просто, но предполагается, что вы знаете объект, который ищете, и, поскольку вы не указали это в вопросе, этот ответ может кому-то помочь.

...