SIGABRT错误 - NSUnknownKeyExeption(SetValue:forUndefinedKey;)

时间:2012-02-05 14:54:04

标签: iphone objective-c ios xcode sigabrt

每次构建时都会出现SIGABRT错误。我看到下面的原因:

由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[setValue:forUndefinedKey:]:此类不是密钥值编码兼容的密钥numberEntered。'

-(IBAction)numberEntered:(id)sender
{ 
    NSNumber *day=[NSString stringWithFormat:@"@%", dayEntry];

    NSLog(@"%@", day);
}

我认为它与我试图将错误的值传递给* day有关,但我无法看到问题是什么(xCode中没有错误)。

基本上我想做的就是从文本字段中检索一个数值并设置它做一个变量(天),这样我就可以在计算中使用它。我添加了NSLog,以确保从文本字段中获取正确的数据。

提前致谢!

4 个答案:

答案 0 :(得分:1)

另一个问题是您的格式字符串以及您要将NSString分配给NSNumber

NSNumber *day=[NSString stringWithFormat:@"@%", dayEntry];

尝试将其更改为:

NSString *day=[NSString stringWithFormat:@"%@", dayEntry];

微妙的区别,看看你是否能发现它。

答案 1 :(得分:0)

试试这个:

NSNumber *day = [NSNumber numberWithInt:[dayEntry intValue]];

答案 2 :(得分:0)

确保在 Custom Class <下的InterfaceBuilder中实际选择实现numberEntered:(子类UIView / UIViewController / UITextFIeld或whatnot)的自定义类实现/ em>, Class

为了这个例子,我假设它是一个基于UIViewController的类,你称之为MyViewController。从这个意义上说,在观察“文件所有者”时,您需要在提到的IB下输入该名称。

为了验证这实际上是否是您的问题,您可以在您的viewDidLoad方法中添加一些内容,将某些内容输出到控制台中。在能够这样做之前,您必须从事件中删除该自定义方法(因为该婴儿会触发异常)。如果在显示该viewController的视图时没有出现这种情况,您就会知道您有所描述的问题。

见:

enter image description here

答案 3 :(得分:0)

确保您实际上已经使用IB注册了名为numberEntered:的方法(注意尾随冒号)。这是一种与numberEntered不同的方法(没有尾随冒号)。错误可能是由

引起的
  • 视图调用numberEntered(而不是numberEntered:
  • 运行时尝试通过KVC查找解析(未定义的方法)。

这可能是由于文件所有者丢失(或错误)所造成的。自定义类在.xib文件中为您的控件定义(由Till暗示)或普通旧错字(缺少尾随:)。