添加了传递数据的委托,现在抛出错误类不符合键值编码?

Posted

技术标签:

【中文标题】添加了传递数据的委托,现在抛出错误类不符合键值编码?【英文标题】:Added Delegate to pass data, now throws error class is not key value coding-compliant? 【发布时间】:2013-05-29 16:43:07 【问题描述】:

我正在尝试将数据从一个 Table View Controller 传递回它之前的那个。这是我为完成它而编写的代码: NPViewController.h(传回数据的第二个视图):

@class NPViewController;

@protocol NPViewControllerDelegate <NSObject>

-(void) passItemBack: (NPViewController *) controller didFinishWithItem: (NSString *) string;

@end

@interface NPViewController : UITableViewController <UITextFieldDelegate>
@property (weak, nonatomic) id<NPViewControllerDelegate> delagate;

- (IBAction)createNewProject:(id)sender; //a bar button item that sends data on click
@end

NPViewController.m:

//barButton item IBAction
- (IBAction)createNewProject:(id)sender 
    [self.delagate passItemBack:self didFinishWithItem:@"Test"];
    [self dismissViewControllerAnimated:YES completion:nil];

InternalTabViewController.h //第一个接收数据的视图

#import <UIKit/UIKit.h>
#import "NPViewController.h"


@interface InternalTabViewController : UITableViewController <NPViewControllerDelegate>
@property (weak, nonatomic) NSString * projectName;
@property (weak, nonatomic) NSString * projectWorth;
@end

InternalTabViewController.m

@synthesize projectName, projectWorth;

//in ViewDidLoad
NPViewController *NPVC = [self.storyboard instantiateViewControllerWithIdentifier:@"NPViewController"];
NPVC.delagate = self;

//implementation of protocol function
-(void)passItemBack:(NPViewController *)controller didFinishWithItem:(NSString *)string

    self.projectName = string;

程序无法通过第一个视图控制器(与这两个无关)并抛出错误:

由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类与键 createNewProject 的键值编码不兼容。”

我只是想将两个字符串从一个屏幕传回另一个屏幕。我该如何解决这个问题?

【问题讨论】:

您能在 IB 或情节提要中检查您的 IBAction createNewProject 连接吗? ***.com/questions/5109309/… 当然。他们是相连的。它说它已连接到已发送的操作和引用网点。 检查您的按钮引用插座,在您的代码中,您没有任何 IBOutlet 是条形按钮。您只是将按钮的操作链接到 IBACtion,但您没有设置 IBOutlet。 【参考方案1】:

我不明白你为什么将 NPViewController (ViewController) 传递给 InternalTabViewController(ViewController) 并且稍后你将其关闭 (dismissViewControllerAnimated)。

由于您只需要字符串,我建议重新设计协议

-(void) passItemBack: (NPViewController *) controller didFinishWithItem: (NSString *) string;

更简单的

-(void) passItemBack:(NSString*) item;

不知道能不能解决问题。如果我有你的完整代码,我可以提供帮助。

【讨论】:

以上是关于添加了传递数据的委托,现在抛出错误类不符合键值编码?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode - 如何修复'NSUnknownKeyException',原因:......这个类不符合键X的键值编码”错误?

类不符合键值编码

Cocoa KVC:“类不符合键值编码”

自定义 UITableViewCell 给我:这个类不符合键值编码

应用程序崩溃,因为 - “类不符合键的键值编码”

iOS 此类不符合键标签的键值编码