2012-01-17 43 views
49

我在Objective-C for iOS中进行编程。我想将NSString类型的对象解析为BOOL类型的标量。我有一个值,我知道它将是@“YES”或@“NO”,但是YES(或)NO值是NSString,我只是想将NSString改成BOOL。如何在Objective-C中将NSString解析为BOOL?

我该怎么做?

请回答我,如果你知道。

感谢您的阅读。

回答

141

我认为这是这样的:

BOOL boolValue = [myString boolValue]; 
+0

非常感谢,我明白了。 – 2012-01-17 16:37:30

+0

什么将是“阿卜杜勒”的布尔值?请建议我。 – 2014-03-04 10:19:56

+3

@Abdul Yasin,它将是0/false。如果您知道字符串中存在布尔值,此方法才有效;例如@“1”,@“true”,@“YES”等。除此之外,boolValue将始终返回0; – x4h1d 2014-07-16 09:29:29

2
if ([string isEqualToString: @"YES"]) 
    foo(); 
else 
    bar(); 
+0

LOLü6秒打我!哈哈 – Steve 2012-01-17 16:32:53

+1

这不是正确的方法。请参阅bschultz和Tommy的其他两个答案。 – 2012-01-17 16:34:06

+0

Tim Toady另有说明;-) – 2012-01-17 16:36:44

22

你应该使用NSString-boolValue。直接引用文档:

[返回t]接收方文本的布尔值。在遇到“Y”,“y”,“T”,“t”或数字1-9中的一个的 上返回YES,方法 忽略任何结尾字符。如果接收方不是 ,则返回“否”,并以数字的有效小数文本表示形式开头。

这似乎符合您的输入案例。

+0

非常感谢,我明白了。 – 2012-01-17 16:37:46

0

这可能是最好的一个条件来解决,例如:

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

希望这有助于你,祝你的节目。

+1

该解决方案远未正确。有很多方法可以将一个bool存储在一个字符串中,而这只能处理一个非常特定的方法。为什么重复已经实现的方法的功能。 – FreeAsInBeer 2012-03-16 13:14:46

+0

这太脏了。 – AlKozin 2014-01-16 10:22:30

0

如果字符串为“真”,这就是为什么我认为这是需要扩展此属性也应该返回true ...

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

}