if(!array.count)是否检查数组是空还是空?

时间:2018-03-15 19:38:04

标签: ios objective-c arrays

这里选择的答案表明它检查数组是否为空。如果它不是空的,那意味着应该执行代码。

How to check if array is null or empty?

但是,我看到相反的情况。当我将if (!array.count)与非空数组一起使用时,不会执行其中的代码。如果我将if (array.count)与非空数组一起使用,则执行其中的代码。我在这里缺少什么?

1 个答案:

答案 0 :(得分:3)

该答案中的代码对于提出的问题是正确的。答案中的文字令人困惑。该问题的目标是查看数组是否为“空”。接受的答案有代码:

if (!array || !array.count){
}

该答案中的文字说明:

  

检查数组是否为零,如果不是,则检查它是否为空。

if语句实际上意味着“如果数组为零或数组计数为零,则执行某些操作”。所以恰恰相反。

所以代码是正确的但是文本是错误的(或者至少是误导性的)。

回到你自己的问题。

if (array.count) {
    // same as array.count != 0
    // array is not empty (non-zero count)
}

或:

if (!array.count) {
    // same as !(array.count != 0) or array.count == 0
    // array is empty (zero count)
}

请记住,在C,C ++,Objective-C中,如果表达式的计算结果为非零值,则if语句将被视为“true”,如果表达式的计算结果为零,则将!语句视为零。并且在开始时使用#standardSQL SELECT t.* FROM ( SELECT ARRAY_AGG(t1 ORDER BY t1.col4) arr, MIN(t2.col2) cnt FROM table1 t1 JOIN table2 t2 ON t1.col1 = t2.col1 GROUP BY t1.col1 ), UNNEST(arr) t WITH OFFSET num WHERE num < cnt 会将“true”否定为“false”或“false”否定为“true”。