在这里,我被以下代码块困扰
self.isFiltered?[self.filteredCategories count]:[self.categories count]
这里isFiltered
是一个布尔值,filteredCategories
是一个可变数组,类别是一个数组。此行返回一个整数。我不明白这条线是什么以及如何工作。谢谢
在这里,我被以下代码块困扰
self.isFiltered?[self.filteredCategories count]:[self.categories count]
这里isFiltered
是一个布尔值,filteredCategories
是一个可变数组,类别是一个数组。此行返回一个整数。我不明白这条线是什么以及如何工作。谢谢
这是一个三元语句。假设你有if
这样的:
if (condition)
var = one thing
else
var = other thing
作为三元组,那将是
var = condition ? one thing : other thing
因此,在您的情况下,它会将您的变量设置为过滤器计数(如果已过滤),或者设置为完整类别计数(如果未过滤)。
相同:
int someVariable = 0;
if(self.isFiltered) {
someVariable = [self.filteredCategories count];
} else {
someVariable = [self.categories count];
}
在您的代码中,它只是另一种形式。
好吧,这并不难,它是 if/else 的“高级”版本。它表示如果变量isFiltered
设置为 YES,它将返回filteredCategories
数组中的元素数,但如果设置为 NO,它将返回categories
.
您可以使用普通的 if-else 来简化事情。如有疑问,请使用标准 if-else 语法
if(self.isFiltered){
[self.filteredCategories count]
}
else{
[self.categories count]
}