views:

384

answers:

1

I am getting the error Wrong type argument to unary minus and Expected ';' before ':' token

The error occurs at the - (NSIndexPath *).... line

I am really New at this, so if there is anymore info needed, please ask, if you need to see the entire app, please e-mail me @ james at sevenotwo dot com. the app isn't really complicated. it is based on the sample code on Apple's website for the iphonedatacorerecipes code.

#pragma mark -
#pragma mark Editing rows

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
 NSIndexPath *rowToSelect = indexPath;
    NSInteger section = indexPath.section;
    BOOL isEditing = self.editing;

    // If editing, don't allow notes to be selected
    // Not editing: Only allow notes to be selected
    if ((isEditing && section == NOTES_SECTION) || (!isEditing && section != NOTES_SECTION)) {
        [tableView deselectRowAtIndexPath:indexPath animated:YES];
        rowToSelect = nil;    
    }

 return rowToSelect;
}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    NSInteger section = indexPath.section;
    UIViewController *nextViewController = nil;

    /*
     What to do on selection depends on what section the row is in.
     For Type, Notes, and Instruments, create and push a new view controller of the type appropriate for the next screen.
     */
    switch (section) {
        case TYPE_SECTION:
            nextViewController = [[TypeSelectionViewController alloc] initWithStyle:UITableViewStyleGrouped];
            ((TypeSelectionViewController *)nextViewController).doctor = doctor;
            break;

        case NOTES_SECTION:
            nextViewController = [[NotesViewController alloc] initWithNibName:@"NotesView" bundle:nil];
            ((NotesViewController *)nextViewController).doctor = doctor;
            break;

        case INSTRUMENTS_SECTION:
            nextViewController = [[InstrumentDetailViewController alloc] initWithStyle:UITableViewStyleGrouped];
            ((InstrumentDetailViewController *)nextViewController).doctor = doctor;

            if (indexPath.row < [doctor.instruments count]) {
                Instrument *instrument = [instruments objectAtIndex:indexPath.row];
                ((InstrumentDetailViewController *)nextViewController).instrument = instrument;
            }
            break;

        default:
            break;
    }

    // If we got a new view controller, push it .
    if (nextViewController) {
        [self.navigationController pushViewController:nextViewController animated:YES];
        [nextViewController release];
    }
}


- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
 UITableViewCellEditingStyle style = UITableViewCellEditingStyleNone;
    // Only allow editing in the instruments section.
    // In the instruments section, the last row (row number equal to the count of instruments) is added automatically (see tableView:cellForRowAtIndexPath:) to provide an insertion cell, so configure that cell for insertion; the other cells are configured for deletion.
    if (indexPath.section == INSTRUMENTS_SECTION) {
        // If this is the last item, it's the insertion row.
        if (indexPath.row == [doctor.instruments count]) {
            style = UITableViewCellEditingStyleInsert;
        }
        else {
            style = UITableViewCellEditingStyleDelete;
        }
    }

    return style;
}


- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

    // Only allow deletion, and only in the instruments section
    if ((editingStyle == UITableViewCellEditingStyleDelete) && (indexPath.section == INSTRUMENTS_SECTION)) {
        // Remove the corresponding instrument object from the doctor's instrument list and delete the appropriate table view cell.
        Instrument *instrument = [instruments objectAtIndex:indexPath.row];
        [doctor removeInstrumentsObject:instrument];
        [instruments removeObject:instrument];

        NSManagedObjectContext *context = instrument.managedObjectContext;
        [context deleteObject:instrument];

        [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationTop];
    }
}
+1  A: 

When the compiler gets to - (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath, it thinks it's still inside the definition of a previous method. That's why it's trying to treat - as a unary minus rather than the start of a new method definition.

This means you're missing a } somewhere above the code you posted -- probably in the previous method definition.

cduhn