这让我发疯了。我的字符串总是0
或1
。每当我试图找出它是什么时,我的应用程序就会崩溃。
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。
答案 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];
}