在这个答案中:https://stackoverflow.com/a/4481896/1486928
有这样的一行:
UITableView *tableView = controller == self.fetchedResultsController ? self.tableView : self.searchDisplayController.searchResultsTableView;
这是我第一次在同一行看到所有这些符号:/(我是初学者)。
答案 0 :(得分:4)
something ? foo : bar
只是
if(something) {
foo
} else {
bar
}
它被称为三元运算符。
所以你的代码变成了:
UITableView *tableView;
if(controller == self.fetchedResultsController) {
tableView = self.tableView;
} else {
tableView = self.searchDisplayController.searchResultsTableView;
}
答案 1 :(得分: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
答案 2 :(得分: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;
答案 3 :(得分:1)
这会显示ternary operator。
答案 4 :(得分:1)
这是ternary operator的一个例子。
写出来的:
UITableView *tableView;
if (controller == self.fetchedResultsController)
tableview = self.tableView;
else
tableview = self.searchDisplayController.searchResultsTableView;