这种方法有什么问题?

E-M*_*add 1 iphone cocoa cocoa-touch objective-c

我收到一个警告:"返回使用整数而不是强制转换的指针"这个方法...

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

Jas*_*ien 8

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

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


Dav*_*ong 8

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

(boolStr == @"true" || boolStr == @"1")
Run Code Online (Sandbox Code Playgroud)

那是在进行指针比较,而不是对象相等.你要:

([boolStr isEqualToString:@"true"] || [boolStr isEqualToString:@"1"])
Run Code Online (Sandbox Code Playgroud)


jle*_*ehr 6

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

NSString *myString = @"true"; // or @"YES", etc.
BOOL bool = [myString boolValue];
Run Code Online (Sandbox Code Playgroud)

  • 具体来说,从docementation:`遇到"Y","y","T","t"或数字1-9之一时返回YES - 该方法忽略任何尾随字符. (2认同)