我试图检查if numberOfItemsPerSection
在if条件下是否大于3。它总是返回true。然后我决定调试。
indexPath.row
如何等于1和numberOfItemsPerSection
= 20并且它会进入if条件。
使用以下三元运算符我做错了什么?
if(indexPath.row == (numberOfItemsPerSection > 3) ? (numberOfItemsPerSection-4) : numberOfItemsPerSection)
{
}
答案 0 :(得分:4)
使用括号来解析优先级。通过以下方式更改条件。用括号覆盖你的turnery条件。它将首先解析turnery操作员,然后将它与indexPath.row进行比较。
if(indexPath.row == ((numberOfItemsPerSection > 3) ? (numberOfItemsPerSection-4) : numberOfItemsPerSection))
答案 1 :(得分:1)
你可以写:
if (indexPath.row == (numberOfItemsPerSection > 3 ? numberOfItemsPerSection - 4 : numberOfItemsPerSection)) { ... }
或者如果你不想伤害你的眼睛:
BOOL desiredRow = numberOfItemsPerSection > 3 ? numberOfItemsPerSection - 4 : numberOfItemsPerSection;
if (indexPath.row == desiredRow) { ... }
答案 2 :(得分:1)
NSInteger desiredRow = numberOfItemsPerSection > 3 ? (numberOfItemsPerSection-4) : numberOfItemsPerSection;
if(indexPath.row == desiredRow) { ... // do your coding }