复选框状态问题

Jwo*_*dge 2 cocoa objective-c

我是Cocoa的新手,并且正在通过Hillegass的书.我在第20章的挑战2中遇到了麻烦.

挑战是添加复选框,如果绘制的字母是斜体,粗体或两者,则切换.

-(IBAction)toggleItalic:(id)sender
{
int state = [italicBox state];
NSLog(@"state %d", state);
if (state = 1) {
    italic = YES;
    NSLog(@"italic is yes");
}
else {
    italic = NO;
    NSLog(@"italic is no");

}
}
Run Code Online (Sandbox Code Playgroud)

现在,当检查框这个代码片段将返回肯定的,当没有选中该复选框.我究竟做错了什么?

谢谢,

贾斯汀.

Mar*_*ell 9

你的问题在于你的if语句:

if (state = 1) {
Run Code Online (Sandbox Code Playgroud)

您将状态分配给值1:,state = 1而您需要测试的是当前状态是1:state ==1

这是一个相当常见的错误(特别是在允许在if语句中进行赋值的语言中).学会解决这个问题的一个诀窍是进行比较检查:

if (1 == state) 
Run Code Online (Sandbox Code Playgroud)

您无法分配1给其他值.因此,如果您错误地使用=而不是==您将获得编译器错误,这是一个简单的修复.

  • +1表示正确性.此外,您应该使用枚举"NSOnState"和"NSOffState"而不是直接使用数值.避免魔术数字.=) (6认同)