Определите, содержит ли NSString значение, отличное от NULL / NIL - PullRequest
0 голосов
/ 10 марта 2011

Я пытаюсь определить, содержит ли значение NSString значение, отличное от NULL / nil, и я делаю это неправильно:

NSString *strWord;
strWord = [NSString stringWithFormat: @"%@", [someArray objectAtIndex:x]];

// THIS IS WRONG:

if (strWord != nil) {
    // do something
} else {
   // don't do something
}

Любая помощь приветствуется! LQ

Ответы [ 2 ]

2 голосов
/ 10 марта 2011

Я подозреваю, что ваша проблема strWord на самом деле содержит @"(null)", что происходит, если вы передаете nil токену формата %@ в +stringWithFormat:.Вместо этого вы хотите проверить, является ли [someArray objectAtIndex:x] nil.К счастью для вас, есть ярлык.Просто используйте это вместо:

NSString *strWord = [[someArray objectAtIndex:x] description];

Это идентично [NSString stringWithFormat:@"%@", [someArray objectAtIndex:x]], за исключением случаев, когда [someArray objectAtIndex:x] равно nil, тогда strWord будет содержать nil вместо @"(null)".Причина этого заключается в том, что токен формата %@ просто вызывает -description переданного аргумента, за исключением особых случаев nil и превращает его в @"(null)".Однако вызов -description непосредственно для объекта пропустит проверку nil и просто вернет nil при вызове nil.

1 голос
/ 10 марта 2011

@ Техника Кевина Балларда полезна, но помните, что [someArray objectAtIndex:x] не может вернуть ноль, если someArray не равно нулю (вы не можете положить ноль в NSArray).Самое близкое, что он может вернуть - +[NSNull null], что не одно и то же.Так что, если вы получаете «(null)» здесь, это говорит о том, что ваш массив на самом деле равен нулю.Я бы, вероятно, проверил это ранее в вашем методе, а не искал особый случай @ "(null)" в строке.

...