Co jest najlepsze, aby określić, czy NSString jest pusty? Teraz używam następujące:Jak ustalić, czy NSString jest pusty?
if (string == nil || [string isEqualToString:@""]) { // do something }
Dzięki za wszelkie rady.
Co jest najlepsze, aby określić, czy NSString jest pusty? Teraz używam następujące:Jak ustalić, czy NSString jest pusty?
if (string == nil || [string isEqualToString:@""]) { // do something }
Dzięki za wszelkie rady.
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.
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]) {
}
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
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
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.
}
Usuwa tylko wiodące i spóźniające się białe znaki. – uchuugaka
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. –
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'.) –
+1 za odpowiedź. a co z białymi znakami? Co jeśli nie chcesz ich liczyć? Jakaś przydatna droga? – cocoafan
@ 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 '... –
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