objective-c - 复选框状态问题

标签 objective-c cocoa

我是 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");

}
}

现在,当选中该框时,这段代码将返回“yes”,在未选中该框时返回。我做错了什么?

谢谢

贾斯汀。

最佳答案

你的问题出在你的 if 语句上:

if (state = 1) {

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

这是一个相当常见的错误(特别是在允许在 if 语句中赋值的语言中)。学会解决这个问题的一个技巧是进行比较检查,如下所示:

if (1 == state) 

您不能将 1 分配给其他值。因此,如果您错误地使用 = 而不是 ==,您将收到编译器错误,并且很容易修复。

关于objective-c - 复选框状态问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1954187/

相关文章:

cocoa - 云套件: "error saving record WRITE operation not permitted"

iphone - 同步写入控制台

iphone - 滑动浏览一堆图像?

ios - 每个 UIViewController 实例的不同 URI

objective-c - 如何检查通过脚本获取的字符串的值?

objective-c - NSError 不会清除旧错误

objective-c - Swift - Objective-C 加载类方法?

objective-c - 使用 open() 保证文件权限与使用 NSData 文件写入方法写入的文件的权限相同

macos - 如何从 OSX 中的自定义工作表获取信息

objective-c - 在 Mac App Store 上分发包含后台应用程序的 pref pane