2009-12-03 6 views
14

¿Hay alguna manera de verificar si un conjunto está vacío?¿Buscando NSSet vacío?

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

// Code to do things... 

// Check for empty set? 

[setEmpty release]; 

Gary

+1

Esta es una tarea bastante simple. Debería adquirir el hábito de mirar los documentos en busca de respuestas como estas. –

+2

Hola Brad, revisé los documentos, pero me perdí la entrada para contar. Más error de mi parte que holgazanería desenfrenada. – fuzzygoat

Respuesta

25

se puede utilizar [recuento setEmpty] para ver cuántos elementos hay en el conjunto ... así:

if ([setEmpty count] == 0) { 

o

if (![setEmpty count]) { 

etc. ..

No vi un explici t 'isEmpty' método en http://developer.apple.com/mac/library/documentation/cocoa/Reference/Foundation/Classes/NSSet_Class/Reference/Reference.html pero si existe, elija eso en lugar de verificar el recuento.

+0

Gracias Malaxeur, perfecto Lo busqué tanto en los documentos como en el autocompletado de Xcode y lo perdí ambas veces :(No creo que haya un 'isEmpty' ya que recibí un error de método faltante al probarlo. De todos modos el recuento es perfecto, gracias por la respuesta y su tiempo. – fuzzygoat

+2

Si lo usa mucho, puede agregar un método 'isEmpty' como una categoría en' NSSet', que un cuerpo como '- (BOOL) isEmpty {return [auto cuenta] == 0;} '. – mipadi

2
... aquí está el archivo solo más utilizado en mi repositorio compartido: 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

Esta función se activará en todos los contenedores de cacao, cadenas y NSData.

4

¿Qué hay de este para juegos realmente grandes? El objetivo es no hacer el conteo cada vez.

NSSet *mySet = ... 

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