I am getting the error Wrong type argument to unary minus and Expected ';' before ':' token
- by James B.
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];
}
}