2012-12-18 6 views
6

In Xcode, memorizzo alcuni NSString in NSMutableArray.controllare e rimuovere una stringa specifica dall'array nsmutable senza indice

Hello 
Here 
MyBook 
Bible 
Array 
Name2 
There 
IamCriminal 

L'utente può immettere la stringa.

Name2 

ho bisogno di cancellare quel particolare stringa da NSMutableArray senza conoscere indice della stringa. Ho una certa idea, Usa l'iterazione. Qualsiasi altro modo migliore. Plz Give con codici di esempio.

risposta

19

è possibile utilizzare containsObject metodo in un NSMutableArray

if ([yourArray containsObject:@"object"]) { 
    [yourArray removeObject:@"object"]; 
} 
+2

Non penso che funzionerà. Qui questo metodo controllerà il riferimento non il contenuto. –

+3

@InderKumarRathore, ho controllato il suo funzionamento – arthankamal

+2

perché funziona in modo costante. Inserisci questo 'NSString * str = [[NSString alloc] initWithUTF8String:" ciao "];' in array e usa il tuo metodo per rimuovere '@" ciao "' –

0

Prova questo,

BOOL flag = [arrayName containsObject:Str]; 

if (flag == YES) 
{ 
    [arrayName removeObject:Str]; 
} 
+0

Non penso che funzionerà. Qui questo metodo controllerà il riferimento non il contenuto. –

+1

@InderKumarRathore ho già implementato nel codice e il suo funzionamento. – Kalpesh

+0

Pelase legge attentamente la domanda. E ho commentato @ arthan.v risposta. per favore passa attraverso quello –

0
[array removeObject:@"name2"]; 
+1

Non penso che funzionerà. Qui questo metodo controllerà il riferimento non il contenuto. –

0

Si può provare questo

for(NSString *string in array) 
{ 
    if([[string lowercasestring] isEqualToSring:[yourString lowercasestring]]) 
    { 
     [array removeObject:string]; 
     break; 
    } 
} 
+0

Chiede una soluzione eccetto il roba tradizionale che hai scritto –

8
[array removeObject:@"Name2"]; 

La documentazione per RemoveObject di NSMutableArray: Metodo stati:

partite sono determinate sulla base della risposta di un oggetto al IsEqual: messaggio

In altre parole, questo metodo itera oltre l'array a confronto gli oggetti a @"Name2". Se un oggetto è uguale a @"Name2", viene rimosso dall'array.

+1

+1 con qualche riferimento .. Lo controllerò Non lo sapevo che –

+1

Sì, sta funzionando :) Nuova cosa per me –

+1

Sì, funziona davvero bene. – Selvaraj

0

si può semplicemente utilizzare

[yourArray removeObject:stringObjectToDelete]; 

Questo metodo utilizza indexOfObject: per individuare le partite e poi li rimuove utilizzando removeObjectAtIndex :. Pertanto, le corrispondenze sono determinate sulla base della risposta di un oggetto al messaggio isEqual :. Se l'array non contiene anObject, il metodo non ha alcun effetto.