我在Objective-C for iOS中进行编程。我想将NSString类型的对象解析为BOOL类型的标量。我有一个值,我知道它将是@“YES”或@“NO”,但是YES(或)NO值是NSString,我只是想将NSString改成BOOL。如何在Objective-C中将NSString解析为BOOL?
我该怎么做?
请回答我,如果你知道。
感谢您的阅读。
我在Objective-C for iOS中进行编程。我想将NSString类型的对象解析为BOOL类型的标量。我有一个值,我知道它将是@“YES”或@“NO”,但是YES(或)NO值是NSString,我只是想将NSString改成BOOL。如何在Objective-C中将NSString解析为BOOL?
我该怎么做?
请回答我,如果你知道。
感谢您的阅读。
我认为这是这样的:
BOOL boolValue = [myString boolValue];
if ([string isEqualToString: @"YES"])
foo();
else
bar();
LOLü6秒打我!哈哈 – Steve 2012-01-17 16:32:53
这不是正确的方法。请参阅bschultz和Tommy的其他两个答案。 – 2012-01-17 16:34:06
Tim Toady另有说明;-) – 2012-01-17 16:36:44
你应该使用NSString
的-boolValue
。直接引用文档:
[返回t]接收方文本的布尔值。在遇到“Y”,“y”,“T”,“t”或数字1-9中的一个的 上返回YES,方法 忽略任何结尾字符。如果接收方不是 ,则返回“否”,并以数字的有效小数文本表示形式开头。
这似乎符合您的输入案例。
非常感谢,我明白了。 – 2012-01-17 16:37:46
这可能是最好的一个条件来解决,例如:
if ([myString isEqualToString:@"YES"])
myBool = YES;
else if ([myString isEqualToString:@"NO"])
myBool = NO;
希望这有助于你,祝你的节目。
该解决方案远未正确。有很多方法可以将一个bool存储在一个字符串中,而这只能处理一个非常特定的方法。为什么重复已经实现的方法的功能。 – FreeAsInBeer 2012-03-16 13:14:46
这太脏了。 – AlKozin 2014-01-16 10:22:30
如果字符串为“真”,这就是为什么我认为这是需要扩展此属性也应该返回true ...
extension NSString{
var boolValueExtended: Bool {
get{
return boolValue ||
self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()).uppercaseString == "TRUE"
}
}
}
非常感谢,我明白了。 – 2012-01-17 16:37:30
什么将是“阿卜杜勒”的布尔值?请建议我。 – 2014-03-04 10:19:56
@Abdul Yasin,它将是0/false。如果您知道字符串中存在布尔值,此方法才有效;例如@“1”,@“true”,@“YES”等。除此之外,boolValue将始终返回0; – x4h1d 2014-07-16 09:29:29