【发布时间】:2012-02-12 11:12:11
【问题描述】:
我正在使用 iOS 的 Objective-C 编程。我想将 NSString 类型的对象解析为 BOOL 类型的标量。
我有一个值,我知道它要么是@"YES" 要么是@"NO",但是 YES(或)NO 值是 NSString,我只想将 NSString 更改为 BOOL。
我该怎么做?
如果你知道请回答我。
感谢阅读。
【问题讨论】:
标签: objective-c cocoa nsstring boolean
我正在使用 iOS 的 Objective-C 编程。我想将 NSString 类型的对象解析为 BOOL 类型的标量。
我有一个值,我知道它要么是@"YES" 要么是@"NO",但是 YES(或)NO 值是 NSString,我只想将 NSString 更改为 BOOL。
我该怎么做?
如果你知道请回答我。
感谢阅读。
【问题讨论】:
标签: objective-c cocoa nsstring boolean
我认为是这样的:
BOOL boolValue = [myString boolValue];
【讨论】:
string 0给我nil,@x4h1d?
po 表示 print object 和 boolValue 显然不是一个对象。
您可能应该使用NSString 的-boolValue。直接引用文档:
[返回]接收者文本的布尔值。返回 YES 遇到“Y”、“y”、“T”、“t”或数字 1-9 之一——方法 忽略任何尾随字符。如果接收者没有,则返回 NO 以数字的有效十进制文本表示开始。
这似乎与您的输入案例相匹配。
【讨论】:
if ([string isEqualToString: @"YES"])
foo();
else
bar();
【讨论】:
I exactly know the return value 所以我不会说这是错误的。虽然我同意boolValue 似乎更健壮 - 并且可能更快,因为只需要检查第一个字符......但仍然。
这可能最好用一个条件来解决,例如:
if ([myString isEqualToString:@"YES"])
myBool = YES;
else if ([myString isEqualToString:@"NO"])
myBool = NO;
希望这对您有所帮助,祝您编程顺利。
【讨论】:
如果字符串为“真”,该属性也应该返回真,这就是我认为需要扩展的原因...
extension NSString{
var boolValueExtended: Bool {
get{
return boolValue ||
self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()).uppercaseString == "TRUE"
}
}
}
【讨论】: