语义问题控制可能达到非空函数的结束

时间:2014-08-29 17:47:44

标签: ios objective-c uitableview

我正在创建一个食谱应用程序,并在我的表视图的section方法中的行数中遇到了这个语义问题。这是我第一次真正使用表格视图,我想知道是否有人能够看到我做错了什么,并指出我正确的方向。谢谢!

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    // Return the number of rows in the section.
    if (menuInt == 0)
        return [soupsArray count];
    if (menuInt == 1)
        return [saladsArray count];
    if (menuInt == 2)
        return [appetizersArray count];
    if (menuInt == 3)
        return [entreeArray count];
    if (menuInt == 4)
        return [dissertsArray count];

    [self.tableView reloadData];
}

2 个答案:

答案 0 :(得分:3)

如果所有if条件都失败会怎样?您需要确保至少返回一个NSInteger,即使您确定其中一个if条件肯定会成功。这就是它的原因。

另外,正如Martin R所指出的那样,你不应该在函数中使用reloadData。

答案 1 :(得分:0)

尝试这两种解决方案中的一种(重载数据也必须在返回语句之前发生)

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
int counter = 0;
// Return the number of rows in the section.
if (menuInt == 0)
    counter = [soupsArray count];
if (menuInt == 1)
    counter = [saladsArray count];
if (menuInt == 2)
    counter = [appetizersArray count];
if (menuInt == 3)
    counter = [entreeArray count];
if (menuInt == 4)
    counter = [dissertsArray count];

[self.tableView reloadData];
return counter;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

// Return the number of rows in the section.
if (menuInt == 0) {
    [self.tableView reloadData];
    return [soupsArray count];
}
 else if (menuInt == 1) {
[self.tableView reloadData];
    return [saladsArray count];
}
 else if (menuInt == 2) {
    [self.tableView reloadData];
    return [appetizersArray count];
}
 else if (menuInt == 3) {
    [self.tableView reloadData];
    return [entreeArray count];
}
 else if (menuInt == 4) {
    [self.tableView reloadData];
    return [dissertsArray count];
else {
    [self.tableview reloadData];
    return 0;
}

}