Как разобрать NSString в BOOL в Objective-C? - PullRequest
52 голосов
/ 17 января 2012

Я программирую в Objective-C для iOS.Я хотел бы проанализировать объект типа NSString в скаляр типа BOOL.

У меня есть значение, и я знаю, что это будет либо @ "YES", либо @ "NO", но это YES (или) НЕТ значения NSString, и я просто хочу изменить NSString на BOOL.

Как я могу это сделать?

Пожалуйста, ответьте мне, если знаете.

Спасибо за чтение.

Ответы [ 5 ]

149 голосов
/ 17 января 2012

Я думаю, что это так:

BOOL boolValue = [myString boolValue];
22 голосов
/ 17 января 2012

Вы, вероятно, должны использовать NSString s -boolValue. Чтобы процитировать документацию напрямую:

[Возвращает t] Булево значение текста получателя. Возвращает ДА ​​на встреча с одним из "Y", "y", "T", "t" или цифрой 1-9 - метод игнорирует любые завершающие символы. Возвращает НЕТ, если получатель не начать с действительного десятичного текстового представления числа.

Это может соответствовать вашим входным данным.

2 голосов
/ 17 января 2012
if ([string isEqualToString: @"YES"])
  foo();
else
  bar();
0 голосов
/ 15 июля 2015

Это свойство также должно возвращать true, если строка 'true', поэтому я думаю, что расширение необходимо ...

extension NSString{
 var boolValueExtended: Bool {
    get{
        return boolValue ||
            self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()).uppercaseString == "TRUE"
    }
}

}

0 голосов
/ 17 января 2012

Это, вероятно, лучше всего решить с помощью условного выражения, например:

if ([myString isEqualToString:@"YES"])
    myBool = YES;
else if ([myString isEqualToString:@"NO"])
    myBool = NO;

Надеюсь, это помогло вам, удачи в программировании.

...