2012-12-18 16 views
6

W Xcode przechowuję niektóre NSString w NSMutableArray.Sprawdź i usuń określony ciąg z tablicy nsmutable bez indeksu

Hello 
Here 
MyBook 
Bible 
Array 
Name2 
There 
IamCriminal 

Użytkownik może wprowadzić ciąg znaków.

Name2 

muszę usunąć ten konkretny ciąg od NSMutableArray nie wiedząc indeks łańcucha. Mam pewne pojęcie, że Użyj iteracji. Każdy inny najlepszy sposób. Plz Podaj z przykładowymi kodowaniami.

Odpowiedz

19

można użyć containsObject metodę w NSMutableArray

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

Nie sądzę, że to zadziała. W tym przypadku ta metoda sprawdzi odniesienie, a nie treść. –

+3

@InderKumarRathore, sprawdziłem, czy działa – arthankamal

+2

działa, ponieważ bierzesz stały ciąg znaków. Wstaw ten 'NSString * str = [[NSString alloc] initWithUTF8String:" hello "];' w tablicy, a następnie użyj swojej metody, aby usunąć '@" witaj "' –

0

Spróbuj tego,

BOOL flag = [arrayName containsObject:Str]; 

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

Nie sądzę, że to zadziała. W tym przypadku ta metoda sprawdzi odniesienie, a nie treść. –

+1

@InderKumarRathore już zaimplementowałem w kodzie i jego działanie. – Kalpesh

+0

Pelase dokładnie przeczytaj to pytanie. I skomentowałem odpowiedź @ arthan.v. proszę przejść przez to. –

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

Nie sądzę, że to zadziała. W tym przypadku ta metoda sprawdzi odniesienie, a nie treść. –

0

Można spróbować tej

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

On pyta o rozwiązanie z wyjątkiem tradycyjne rzeczy, które napisałeś –

8
[array removeObject:@"Name2"]; 

Dokumentacja dla NSMutableArray za removeObject: Metoda stany:

mecze są określane na podstawie odpowiedzi obiektu do danego IsEqual: Komunikat

Innymi słowy, ta metoda iteracje nad macierzy porównujące obiekty do @"Name2". Jeśli obiekt jest równy @"Name2", zostanie usunięty z tablicy.

+1

+1 z jakimś odnośnikiem .. Sprawdzę to Nie wiedziałem, że –

+1

Tak działa ... Nowość dla mnie –

+1

Tak, naprawdę działa dobrze. – Selvaraj

0

można po prostu użyć

[yourArray removeObject:stringObjectToDelete]; 

Metoda ta wykorzystuje indexOfObject: zlokalizować mecze, a następnie usuwa je za pomocą removeObjectAtIndex :. Zatem dopasowania są określane na podstawie odpowiedzi obiektu na komunikat isEqual:. Jeśli tablica nie zawiera anObject, metoda nie działa.

Powiązane problemy