这种方法有什么问题?

时间:2010-03-08 16:42:32

标签: iphone objective-c cocoa cocoa-touch

我收到一个警告:“对于这种方法,返回从没有强制转换的整数中生成指针”

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

3 个答案:

答案 0 :(得分:8)

BOOL不是类或对象,因此返回指向BOOL的指针与返回BOOL不同。

你应该删除+(BOOL *)中的*,一切都会好的。

答案 1 :(得分:8)

除了@Jasarien和@jlehr所说的,你有一个问题:

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

这是指针比较,而不是对象相等。你想要:

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

答案 2 :(得分:6)

要从NSString获取BOOL,您需要做的就是发送-boolValue消息,如下所示:

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