2010-05-09 17 views

Odpowiedz

24
if ([string length] == 0) { 
    // do something 
} 

Jeśli łańcuch jest nil, to wiadomość do nil powróci do zera, a wszystko nadal będzie dobrze.

+0

+1 za odpowiedź. a co z białymi znakami? Co jeśli nie chcesz ich liczyć? Jakaś przydatna droga? – cocoafan

+1

@ cocoafan Nie zwięźle. Jeśli chcesz to zrobić często, sugeruję dodanie kategorii do 'NSString', coś jak' isNotEmpty', że możesz zrobić swoje niestandardowe kontrole. Potem możesz po prostu zrobić 'if ([string isNotEmpty]) {... } 'i będzie również poprawnie obsługiwać' zero '... –

+0

Możesz nadal chcieć wiedzieć, dlaczego długość powróciła 0, więc czasami może być przydatne sprawdzenie zer, po uzyskaniu zera. – uchuugaka

0

Niezły rozwiązywanie

[nil length] jest 0

(0==0) jest 1

następnie ([string length] == 0) będzie 1. Chociaż jest źle.

Najlepszym sposobem jest

if (![string length]) { 

} 
+2

length to NUMBER i powinno być sprawdzane przy użyciu == 0. if (! [String length]) jest c hack i (semantycznie) nie poprawne, ponieważ! powinny być używane dla booleans. Nie mów, że nadal działa. Wiem to. To jest po prostu neandertalskie. – cocoafan

+2

Ta odpowiedź jest błędna. ! 0 to także 1, tak samo jak 0 == 0. Wynik jest taki sam, jedyne, o czym można tutaj dyskutować, to kwestia stylu – Sven

2

To nie tylko sprawdzić, czy nie ma nic w ciąg, ale także return false, jeśli jest to tylko spacje.

NSString *tempString = [myString stringByReplacingOccurrencesOfString:@" " withString:@""]; 


if ([tempString length] != 0) { 
    //There is something in the string. 
} else { 
    //There is nothing or it is just whitespace. 
} 
+0

Usuwa tylko wiodące i spóźniające się białe znaki. – uchuugaka

+0

Wiesz co, ty? w porządku. Robiłem wiele eksperymentów i musiałem skopiować i wkleić niewłaściwy kod. To jest poprawione. Jest to o wiele bardziej wydajne. –

+1

Cokolwiek by to nie było, '-stringByReplacingOccurrencesOfString: withString:' nie jest szczególnie efektywne. Znacznie lepiej jest przetestować to, czego faktycznie szukasz: znaki spoza białych znaków. '! myString || [myString rangeOfCharacterFromSet: [[NSCharacterSet whitespaceCharacterSet] invertedSet] .location == NSNotFound' (W tym przypadku musisz sprawdzić, czy 'myString' jest' nil' jawnie, ponieważ 'NSRange' wynikające z wiadomości' nil' nie będzie miało 'NSNotFound' w polu' location'.) –

Powiązane problemy