Проверка пустой NSSet?
Есть ли способ проверить, является ли набор пустым?
NSMutableSet *setEmpty = [[NSMutableSet alloc] init];
// Code to do things...
// Check for empty set?
[setEmpty release];
Гэри
Ответы
Ответ 1
Вы можете использовать [setEmpty count], чтобы узнать, сколько элементов в наборе... так:
if ([setEmpty count] == 0) {
или
if (![setEmpty count]) {
и т.д...
Я не видел явного метода isEmpty на http://developer.apple.com/mac/library/documentation/cocoa/Reference/Foundation/Classes/NSSet_Class/Reference/Reference.html, но если он существует, перейдите для этого, вместо того, чтобы проверять счет.
Ответ 2
Как насчет этого для действительно больших наборов? Цель состоит в том, чтобы не делать счет каждый раз.
NSSet *mySet = ...
if ([mySet anyObject] == nil)
{
// The set is empty
}
Ответ 3
... здесь самый популярный файл в моем общем хранилище:
DMCommonMacros.h
static inline BOOL IsEmpty(id thing) {
return thing == nil
|| ([thing respondsToSelector:@selector(length)]
&& [(NSData *)thing length] == 0)
|| ([thing respondsToSelector:@selector(count)]
&& [(NSArray *)thing count] == 0);
}
- Wil Shiply
Эта функция будет работать во всех контейнерах Cocoa, строках и NSData.