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 に答える