不能使用字符串作为布尔值

时间:2014-05-08 23:00:10

标签: ios objective-c unrecognized-selector

这让我发疯了。我的字符串总是01。每当我试图找出它是什么时,我的应用程序就会崩溃。

if([[loggedUser isStaff] isEqualToString:@"1"])
{                         
[self performSegueWithIdentifier:@"staffLogin" sender:self];
}
else{
[self performSegueWithIdentifier:@"userLogin" sender:self];
}

这就是控制台所说的:

[740:a0b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFBoolean isEqualToString:]: unrecognized selector sent to instance 0x2d16350'

发生了什么事?我检查了调试器,它正在检查的字符串正确地显示0和1。

2 个答案:

答案 0 :(得分:3)

您尝试在布尔值上调用NSString方法。您只需要检查布尔值是否为真。

if([[loggedUser isStaff] boolValue])
{                         
    [self performSegueWithIdentifier:@"staffLogin" sender:self];
}
else{
    [self performSegueWithIdentifier:@"userLogin" sender:self];
}

假设isStaff是一个保持布尔值的NSNumber对象。

if([loggedUser isStaff])
{                         
    [self performSegueWithIdentifier:@"staffLogin" sender:self];
}
else{
    [self performSegueWithIdentifier:@"userLogin" sender:self];
}

假设isStaff是一个boolan值。

答案 1 :(得分:2)

[loggedUser isStaff]似乎是一个NSNumber / Boolean对象,但你试图将它与NSString进行比较。布尔值和NSNUmbers没有isEqualToString方法。

如果你想比较用户是否是职员,你应该尝试:

if ([[loggedUser isStaff] boolValue])
{
[self performSegueWithIdentifier:@"staffLogin" sender:self];
}
else{
[self performSegueWithIdentifier:@"userLogin" sender:self];
}