Проверка NSP предиката для класса объекта

У меня есть массив UIView объекты. Я хочу позвонить - (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate на этом массиве, чтобы получить массив MyCustomView объекты.

Как кодировать предикат с помощью "isKindOf:"?

4 ответа

Решение

Попробуй (расстроенный)

[NSPredicate predicateWithFormat: @"className == %@", [someObject className]]

Или же

[NSPredicate predicateWithFormat: @"class == %@", [someObject class]]

Я получил ошибки, используя метод Джефа. Это сработало для меня, хотя.

NSPredicate *predicate = [NSPredicate predicateWithFormat:
                                              @"self isKindOfClass: %@", class];

Источник: /questions/17681305/mozhno-li-otfiltrovat-nsarray-po-klassu/17681320#17681320

Для всех, кто заинтересован, вот Swift-версия метода Джефа:

      NSPredicate(format: "className = %@", String(describing: MyCustomView.self))

Как насчет использования -className как твой ключ?

NSPredicate* foo = [NSPredicate predicateWithFormat: @"className == %@", @"MyCustomView"];
Другие вопросы по тегам