我收到错误错误类型参数一元减号和预期';'在 ':' 标记之前
Posted
技术标签:
【中文标题】我收到错误错误类型参数一元减号和预期\';\'在 \':\' 标记之前【英文标题】:I am getting the error Wrong type argument to unary minus and Expected ';' before ':' token我收到错误错误类型参数一元减号和预期';'在 ':' 标记之前 【发布时间】:2010-04-15 04:18:27 【问题描述】:我收到错误错误类型参数一元减号和预期';'在 ':' 标记之前
错误发生在 - (NSIndexPath *).... 行
我在这方面真的很新,所以如果需要更多信息,请询问,如果您需要查看整个应用程序,请给我发电子邮件 @james at Sevenotwo dot com。该应用程序并不复杂。它基于 Apple 网站上的 iphonedatacorerecipes 代码示例代码。
#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];
【问题讨论】:
通常这意味着你忘记了一个';'某处。 ...并寻找丢失的 ';' 在你得到错误的那一行之前。 您需要在发布内容之前发布这些行。 @David 感谢您的编辑,代码要了我的命 :) 这个文件叫什么名字? 【参考方案1】:当编译器到达- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
时,它认为它仍在前一个方法的定义中。这就是为什么它试图将 - 视为一元减号而不是新方法定义的开始。
这意味着您在发布的代码上方的某处缺少 —— 可能在之前的方法定义中。
【讨论】:
【参考方案2】:尝试使用代码折叠来查找丢失的花括号:- 右键单击包含 XCODE 错误的代码文件,然后选择 代码折叠->折叠方法/函数选项 或者 快捷键:-按 Control + Command + 向上箭头键
【讨论】:
以上是关于我收到错误错误类型参数一元减号和预期';'在 ':' 标记之前的主要内容,如果未能解决你的问题,请参考以下文章
错误:无法将类型“(_)->()”的值转换为预期的参数类型“(()-> Void)?”
我收到错误 array_merge 预期参数 2 在 laravel 8 工厂?