2009-12-03 5 views
14

Existe-t-il un moyen de vérifier si un ensemble est vide?Vérification de NSSet vide?

NSMutableSet *setEmpty = [[NSMutableSet alloc] init]; 

// Code to do things... 

// Check for empty set? 

[setEmpty release]; 

gary

+1

Ceci est une tâche assez simple. Vous devriez prendre l'habitude de regarder les docs pour des réponses comme celles-ci. –

+2

Salut Brad, j'ai vérifié les documents, mais j'ai raté l'entrée pour le compte. Plus d'erreur de ma part que la paresse rampante. – fuzzygoat

Répondre

25

Vous pouvez utiliser [nombre setEmpty] pour voir combien d'éléments sont dans l'ensemble ... donc:

if ([setEmpty count] == 0) { 

ou

if (![setEmpty count]) { 

etc. ..

Je n'ai pas vu un explici t 'isEmpty' méthode sur http://developer.apple.com/mac/library/documentation/cocoa/Reference/Foundation/Classes/NSSet_Class/Reference/Reference.html mais si elle existe, allez-y plutôt que de vérifier le nombre.

+0

Merci Malaxeur, parfait je l'ai cherché dans les docs et dans le Xcode auto-complet et je l'ai manqué deux fois :(Je ne pense pas qu'il y ait un 'isEmpty' car j'ai manqué une erreur de méthode lors du test. Quoi qu'il en soit, c'est parfait, merci pour la réponse et votre temps – fuzzygoat

+2

Si vous l'utilisez beaucoup, vous pouvez ajouter une méthode 'isEmpty' en tant que catégorie sur' NSSet', un corps comme '- (BOOL) isEmpty {return [compte auto] == 0;} '. – mipadi

2
... voici le single le plus fichier utilisé dans mon référentiel partagé: 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

Cette fonction fonctionnera sur tous les contenants de cacao, les chaînes et NSData.

4

Qu'en est-il de celui-ci pour les grands ensembles? Le but est de ne pas faire le compte à chaque fois.

NSSet *mySet = ... 

if ([mySet anyObject] == nil) 
{ 
    // The set is empty 
} 
Questions connexes