1

谁能告诉我为什么以下是可以的:

if (newEditingMode) {
    dayView.dayViewIsInEditingMode = YES;
}
else{
    dayView.dayViewIsInEditingMode = NO;
}

但以下给出了错误Expression is not assignable

newEditingMode ? dayView.dayViewIsInEditingMode = YES : dayView.dayViewIsInEditingMode = NO;
4

2 回答 2

4

您可以使用括号,它会编译。试试下面的。

newEditingMode ? (dayView.dayViewIsInEditingMode = YES) : (dayView.dayViewIsInEditingMode = NO);

但是,您不应该在三元条件本身内执行赋值;你应该改用这个。

dayView.dayViewIsInEditingMode = newEditingMode ? YES : NO;

或者,在这种情况下,您可以完全删除三元,因为它是多余的。

dayView.dayViewIsInEditingMode = newEditingMode;
于 2013-04-27T18:44:25.440 回答
3

三元运算符对运算顺序做了很奇怪的事情。这是一个可能会有所帮助的可行解决方案。

dayView.dayViewIsInEditingMode = (newEditingMode ? YES : NO);

看到你在做什么,你也可以这样写:

dayView.dayViewIsInEditingMode = newEditingMode;
于 2013-04-27T18:46:05.733 回答