2

在这个答案中:https ://stackoverflow.com/a/4481896/1486928

有这样一行:

 UITableView *tableView = controller == self.fetchedResultsController ? self.tableView : self.searchDisplayController.searchResultsTableView;

这是我第一次在同一行中看到所有这些符号:/(我是初学者)。

4

5 回答 5

4

something ? foo : bar只是一个较短的版本

if(something) {
   foo
} else {
   bar 
}

它被称为三元运算符。

所以你的一段代码变成:

UITableView *tableView;
if(controller == self.fetchedResultsController) {
    tableView = self.tableView;
} else {
    tableView = self.searchDisplayController.searchResultsTableView;
}
于 2012-08-26T18:15:36.050 回答
4

这是条件运算符。它所做的基本上是根据其条件返回两个值之一:

SomeType variable = condition ? valueIfTrue : valueIfFalse;

这可以解释为

SomeType variable;
if (condition) {
    variable = valueIfTrue;
} else {
    variable = valueIfFalse;
}

这里的条件是

controller == self.fetchedResultsController

因此视图控制器等于self.fetchedResultsController,tableView 变量将被分配给self.tableView,否则将被分配给self.searchDisplayController.searchResultsTableView

于 2012-08-26T18:18:51.577 回答
2

这意味着如果controller等于self.fetchedResultsController,那么

设置 tableView = self.tableView,否则

tableView = self.searchDisplayController.searchResultsTableView

您可以将其表示为

UITableView *tableView;
 if (controller == self.fetchedResultsController)
     tableview = self.tableView;
 else
     tableview = self.searchDisplayController.searchResultsTableView;
于 2012-08-26T18:17:04.813 回答
1

这显示了三元运算符

于 2012-08-26T18:15:01.220 回答
1

这是三元运算符的一个例子。

以手写方式写出:

 UITableView *tableView;
 if (controller == self.fetchedResultsController)
     tableview = self.tableView;
 else
     tableview = self.searchDisplayController.searchResultsTableView;
于 2012-08-26T18:16:39.053 回答