2010-03-08 171 views
1

我得到一個警告:「返回時將指針從整數,未作類型轉換」這種方法...這種方法有什麼問題?

+(BOOL *)getBoolFromString:(NSString *)boolStr 
{ 
    if(boolStr == @"true" || boolStr == @"1"){ 
     return YES; 
    } 
    return NO; 
} 

回答

8

BOOL不是類或對象,所以返回一個指向BOOL是不和返回一個BOOL一樣。

您應該刪除+(BOOL *)中的*,一切都會好的。

6

從一個NSString得到BOOL,所有你需要做的就是發送-boolValue消息,就像這樣:

NSString *myString = @"true"; // or @"YES", etc. 
BOOL bool = [myString boolValue]; 
+2

具體而言,從docementation:'在遇到 「Y」, 「Y」, 「T」, 「T」,或數字1-9-方法忽略了一個返回YES任何尾隨的字符。「 – Abizern 2010-03-08 19:27:29

8

再說什麼@Jasarien和@jlehr說,你有這樣一個問題:

(boolStr == @"true" || boolStr == @"1") 

這是做指針比較,而不是對象相等。你想:

([boolStr isEqualToString:@"true"] || [boolStr isEqualToString:@"1"])