0

在这里,我被以下代码块困扰

self.isFiltered?[self.filteredCategories count]:[self.categories count]

这里isFiltered是一个布尔值,filteredCategories是一个可变数组,类别是一个数组。此行返回一个整数。我不明白这条线是什么以及如何工作。谢谢

4

4 回答 4

9

这是一个三元语句。假设你有if这样的:

if (condition)
    var = one thing
else
    var = other thing

作为三元组,那将是

var = condition ? one thing : other thing

因此,在您的情况下,它会将您的变量设置为过滤器计数(如果已过滤),或者设置为完整类别计数(如果未过滤)。

于 2013-05-16T13:40:04.460 回答
4

相同:

int someVariable = 0;
if(self.isFiltered) {
  someVariable = [self.filteredCategories count];
} else {
  someVariable = [self.categories count];
}

在您的代码中,它只是另一种形式。

于 2013-05-16T13:39:21.120 回答
2

好吧,这并不难,它是 if/else 的“高级”版本。它表示如果变量isFiltered设置为 YES,它将返回filteredCategories数组中的元素数,但如果设置为 NO,它将返回categories.

于 2013-05-16T13:40:34.953 回答
0

您可以使用普通的 if-else 来简化事情。如有疑问,请使用标准 if-else 语法

if(self.isFiltered){
    [self.filteredCategories count]
}
else{
    [self.categories count]
}
于 2013-05-16T13:39:42.450 回答