"Warning reaching end of non-void fuction" with Multiple Sections that pull in multiple CustomCells

Posted by Newbyman on Stack Overflow See other posts from Stack Overflow or by Newbyman
Published on 2010-03-11T18:05:07Z Indexed on 2010/03/11 18:09 UTC
Read the original article Hit count: 207

I'm getting "Reaching end of non-void function" warning, but don't have anything else to return for the compiler. How do I get around the warning??

I'm using customCells to display a table with 3 Sections. Each CustomCell is different, linked with another viewcontroller's tableview within the App, and is getting its data from its individual model. Everything works great in the Simulator and Devices, but I would like to get rid of the warning that I have. It is the only one I have, and it is pending me from uploading to App Store!!

Within the - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {, I have used 3 separate If() statements-(i.e.==0,==1,==2) to control which customCells are displayed within each section throughout the tableview's cells. Each of the customCells were created in IB, pull there data from different models, and are used with other ViewController tableViews.

At the end of the function, I don't have a "cell" or anything else to return, because I already specified which CustomCell to return within each of the If() statements.

Because each of the CustomCells are referenced through the AppDelegate, I can not set up an empty cell at the start of the function and just set the empty cell equal to the desired CustomCell within each of the If() statements, as you can for text, labels, etc...

My question is not a matter of fixing code within the If() statements, unless it is required. My Questions is in "How to remove the warning for reaching end of non-void function-(cellForRowAtIndexPath:) when I have already returned a value for every possible case: if(section == 0); if(section == 1); and if(section == 2).

*Code-Reference: The actual file names were knocked down for simplicity, (section 0 refers to M's, section 1 refers to D's, and section 2 refers to B's).

Here is a sample Layout of the code:

//CELL FOR ROW AT INDEX PATH:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

//Reference to the AppDelegate:
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];

//Section 0:
if(indexPath.section == 0) {

    static NSString *CustomMCellIdentifier = @"CustomMCellIdentifier";

    MCustomCell *mCell = (MCustomCell *)[tableView dequeueReusableCellWithIdentifier:CustomMCellIdentifier];

    if (mCell == nil) {

        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MCustomCell" owner:tableView options:nil];     


        for (id oneObject in nib)
            if ([oneObject isKindOfClass:[MCustomCell class]]) 
                mCell = (MCustomCell *)oneObject;
    }

    //Grab the Data for this item:
    M *mM = [appDelegate.mms objectAtIndex:indexPath.row];

    //Set the Cell
    [mCell setM:mM];

    mCell.selectionStyle =UITableViewCellSelectionStyleNone;

    mCell.root = tableView;

    return mCell;
}


//Section 1:
if(indexPath.section == 1) {

    static NSString *CustomDCellIdentifier = @"CustomDCellIdentifier";

    DCustomCell *dCell = (DCustomCell *)[tableView dequeueReusableCellWithIdentifier:CustomDaddyCellIdentifier];

    if (dCell == nil) {

        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"DCustomCell" owner:tableView options:nil];     



        for (id oneObject in nib)
            if ([oneObject isKindOfClass:[DCustomCell class]]) 
                dCell = (DCustomCell *)oneObject;
    }

    //Grab the Data for this item:
    D *dD = [appDelegate.dds objectAtIndex:indexPath.row];

    //Set the Cell
    [dCell setD:dD];

    //Turns the Cell's SelectionStyle Blue Highlighting off, but still permits the code to run!
    dCell.selectionStyle =UITableViewCellSelectionStyleNone;

    dCell.root = tableView;

    return dCell;
}


//Section 2:
if(indexPath.section == 2) {

    static NSString *CustomBCellIdentifier = @"CustomBCellIdentifier";

    BCustomCell *bCell = (BCustomCell *)[tableView dequeueReusableCellWithIdentifier:CustomBCellIdentifier];

    if (bCell == nil) {

                    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"BCustomCell" owner:tableView options:nil];     



        for (id oneObject in nib)
            if ([oneObject isKindOfClass:[BCustomCell class]]) 
                bCell = (BCustomCell *)oneObject;
    }

    //Grab the Data for this item:
    B *bB = [appDelegate.bbs objectAtIndex:indexPath.row];

    //Set the Cell
    [bCell setB:bB];

    bCell.selectionStyle =UITableViewCellSelectionStyleNone;

    bCell.root = tableView;

    return bCell;
}

//** Getting Warning "Control reaches end of non-void function" 

//Not sure what else to "return ???" all CustomCells were specified within the If() statements above for their corresponding IndexPath.Sections.

 }

Any Suggestions ??

© Stack Overflow or respective owner

Related posts about iphone

Related posts about iphone-sdk