NSInvalidArgumentException 原因:无法识别的选择器发送到实例

Posted

技术标签:

【中文标题】NSInvalidArgumentException 原因:无法识别的选择器发送到实例【英文标题】:NSInvalidArgumentException reason : unrecognized selector sent to instance 【发布时间】:2013-06-08 22:01:51 【问题描述】:

我想回馈一些东西,因为这里的每个人都反应迅速。我在操作“按钮”上收到上述错误。这让我快疯了。你看我有一个主/细节模板,我在我的项目中添加了一个额外的细节视图。我在第二个详细视图上有一个按钮,但在第一个上没有。我从按钮操作中取出了所有代码,但仍然收到错误,所以我将相同的按钮添加到第一个详细视图中......你知道它是什么工作。

-(IBAction) addData_btn: (sender)

    NSMutableArray *array = [[NSMutableArray alloc] init];

    [array addObject:AcctName.text];
    [array addObject:AcctNum.text];
    [array addObject:DayDue.text];
    [array addObject:paymnt.text];
    [array addObject:remBalance.text];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);

    NSString *documentPath = [paths objectAtIndex:0];

    NSString *plistPath = [documentPath stringByAppendingPathComponent:@"Accounts.plist"];

    [array writeToFile:plistPath atomically: true];

我在第一个详细视图中添加了相同的按钮,没有任何代码......它工作。

【问题讨论】:

这毫无意义。您是说通过在另一个视图控制器上不必要地添加一个不需要的按钮来解决一个视图控制器中的问题?这不是修复错误的正确方法。 如果您向我们显示完整的错误消息,它将告诉我们尝试为哪种对象调用哪种方法。这将帮助我们诊断正在发生的事情。 虽然我同意这是不正确的,但它以某种方式纠正了问题 【参考方案1】:

确保在 Interface Builder 上,您没有在按钮上留下任何与对应 ViewController 上不存在的操作的连接。否则,当按钮被触摸时,将尝试调用一个不存在的方法,并抛出此异常。

【讨论】:

或者如果你使用CoreData,你在模型文件中添加了属性。【参考方案2】:

如果您的问题发生在您拥有多个 detailViewControllers 的情况下...将相同的按钮或字段添加到另一个 detailViewController。它应该解决问题。祝你好运

【讨论】:

以上是关于NSInvalidArgumentException 原因:无法识别的选择器发送到实例的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 作为参数传递 swift