Ios NSInvalidArgumentException无法识别的选择器已发送到实例

Ios NSInvalidArgumentException无法识别的选择器已发送到实例,ios,Ios,我正在开发一个twitter查看应用程序,在将数据从单元格传递到详细视图时遇到了问题。每次单击单元格时,我的程序都会因此错误而终止 2015-09-04 12:18:34.298 twitterView2[10580:872508] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[TwitterPostInfo objectForKey:]: unrecognized s

我正在开发一个twitter查看应用程序,在将数据从单元格传递到详细视图时遇到了问题。每次单击单元格时,我的程序都会因此错误而终止

2015-09-04 12:18:34.298 twitterView2[10580:872508] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[TwitterPostInfo objectForKey:]: unrecognized selector sent to instance 0x7f9fb261f890'
*** First throw call stack:
(
    0   CoreFoundation                      0x000000010527fc65 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x0000000104f18bb7 objc_exception_throw + 45
    2   CoreFoundation                      0x00000001052870ad -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
    3   CoreFoundation                      0x00000001051dd13c ___forwarding___ + 988
    4   CoreFoundation                      0x00000001051dccd8 

如果不知道在哪里分配此类的tweetDetail属性,就很难确定,但似乎是分配了TwitterPostInfo类型的对象,而不是NSDictionary类型的对象。检查设置此属性的位置,并确保其类型正确

或者,如果要传递TwitterPostInfo对象,则必须更改tweetDetail的类型以匹配。当然,您必须更新访问其数据的方式(我假设它是一个自定义类,我无法通过Google找到任何内容)

编辑:

在看到prepareForSegue方法之后,我猜您打算传递一个TwitterPostInfo对象,而不是NSDictionary。如果这是真的,您需要将tweetDetail的类型从NSDictionary更改为TwitterPostInfo。然后,您将不使用
[self.tweetDetail objectForKey:@“text”
[self.tweetDetail objectForKey:@“created_at”]
,而是使用与
self.tweetDetail.text
self.tweetDetail.createdAt
等效的内容,具体取决于您构建类的方式

请为TwitterDetailVC.h尝试以下操作:

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

@interface TwitterDetailVC : UIViewController

@property (strong, nonatomic) TwitterPostInfo *tweetDetail;

@end

找到问题所在位置的最简单方法是在xCode中转到断点导航器(命令+7)。单击底部的+并选择“添加异常断点”。现在,当您运行程序时,它将在异常发生时停止,并在发布时向您显示堆栈跟踪,而不是“未捕获异常”

,您应该使用大括号格式化代码。我很抱歉。谢谢你修改我的帖子,我对StackOverflower非常陌生。我使用的tweetDetail在我上面发布的代码中。我拉的所有物体都是线。这是一个自定义类,您肯定是在某处分配tweetDetail属性。如果不是,为什么要在viewDidLoad中从中获取数据?你能告诉我你是如何将数据传递给这个类的吗?我对编程还是新手,但是数据是在segue中传递的,不是吗?对,在prepareForSegue方法中,你可以获得对目标视图控制器的引用,并分配任何公开的属性,比如你的tweetDetail属性。我的建议是验证您分配的对象是否是NSDictionary,因为您的错误表明它实际上是TwitterPostInfo对象。由于您使用的是segues,您是否可以编辑原始帖子,以包含视图控制器中的prepareForSegue代码,该视图控制器实例化了您的TwitterDetailVC类?太好了,谢谢。因此,看起来您有一个twitter帖子数组,您正在抓取从tableView中选择的一个帖子,以传递给您的TwitterDetailsVC。没关系。在我看来,数组可能包含TwitterPostInfo对象。你能证实这是真的吗?如果是这样,您应该将tweetDetail的类型从NSDictionary更改为TwitterPostInfo。如果您在原始帖子中共享了TwitterPostInfo.h文件,或者至少共享了它的属性,这可能也会有所帮助。
- (void)viewDidLoad {
    [super viewDidLoad];

    self.tweetTextLabel.text = self.tweetDetail.tweetText;
    self.tweetTimeLabel.text = self.tweetDetail.timeDate;
}