2010-08-21 11 views
31

esiste una classe disponibile per verificare se un array non contiene un oggetto? voglio fare qualcosa di simileverifica se un array non contiene un determinato oggetto

if [(myarray doesntContain @"object")] 

è possibile questo

+2

@Alx, quando si sceglie i tag per la vostra domanda, è generalmente una buona idea assicurarsi che uno o f è la lingua che stai chiedendo per =) – Rob

+1

In quale caso, quale tipo di array? Un array C di base o un NSArray? – Stephen

+0

è un array ns di base ... –

risposta

93

Per NSArray uso -containsObject::

if (![myarray containsObject:someObject]) { 
    // ... 
} 
+0

so che contiene oggetto voglio vedere se ci sono non è un oggetto specifico nell'array e se non lo si deve aggiungere. so come aggiungere non so come controllare se manca un oggetto .. –

+0

@Alx: ecco perché il '!' è lì, è fondamentalmente * "se non (array containsObject)" *. Non c'è uno specifico '-doesntContainObject:' come banale da usare '!' O '== NO'. –

+0

dispiace non ho visto che mi dispiace :( Grazie mille btw .. –

0

Se hai a che fare con una NSArray, il tuo primo porto di scalo dovrebbe probabilmente essere il Apple documentation for NSArray, e probabilmente il metodo containsObject, c'è un esempio in this question.

+0

che conosco contiene oggetto voglio vedere se non c'è un oggetto specifico nell'array e se non si vuole aggiungerne uno. so come aggiungere non so come controllare se manca un oggetto .. –

+0

Quindi inverti la chiamata a 'containsObject' come Georg ha indicato nella sua risposta =) – Rob

0

ho scritto una categoria NSArray per raggiungere questi controlli negati tramite metodi di istanza, come lei aveva originariamente richiesto .. Il primo è per un gruppo di set di array tipo di oggetti, il secondo per un controllo singolare. Restituiscono YES nel caso in cui l'istanza dell'array NON contenga l'oggetto o gli oggetti passati. Perché? I punti esclamativi mi confondono.

NSArray + Additions.h

-(BOOL)doesNotContainObjects:(id<NSFastEnumeration>)enumerable;

-(BOOL)doesNotContainObject:(id)object;

NSArray + Additions.m

-(BOOL)doesNotContainObjects:(id<NSFastEnumeration>)enumerable { 
    for (id x in enumerable) { 
    if ([self containsObject:x]) return NO; // exists, abort! 
    } 
    return YES; // it ain't in there, return TRUE; 
} 
- (BOOL)doesNotContainObject:(id)object { 
    if ([self containsObject:object]) return NO; return YES; 
} 
Problemi correlati