2012-01-17 41 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" 
    } 
} 

}