2015-09-04 133 views
0

我正在開發一個twitter查看應用程序,並且遇到了將數據從單元格傳遞到詳細視圖的問題。每次我點擊單元格我的程序終止此錯誤。NSInvalidArgumentException發送到實例的無法識別的選擇器

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 
+0

當發佈時,你應該使用花括號來格式化代碼。 – Adrian

+1

我的歉意。感謝您糾正我的帖子,我很新的stackoverflow –

回答

0

很難知道肯定沒有看到你在哪裏分配這個類的tweetDetail屬性,但它會出現,你要指定類型TwitterPostInfo,不NSDictionary中的對象。檢查你在哪裏設置這個屬性,並確保它是正確的類型。

或者,如果您打算傳遞TwitterPostInfo對象,則必須更改tweetDetail的類型以匹配。當然,你必須更新你的數據訪問方式(我假設它是一個自定義類,我無法通過Google找到任何東西)。

編輯:

看到您的prepareForSegue方法後,我的猜測是,你打算沿着TwitterPostInfo對象,而不是一個NSDictionary通過。如果這是真的,你會想把tweetDetail的類型從NSDictionary改爲TwitterPostInfo。然後,取決於你是如何構建你的課堂,而不是使用[self.tweetDetail objectForKey:@"text"][self.tweetDetail objectForKey:@"created_at"],你會想要使用相當於self.tweetDetail.textself.tweetDetail.createdAt的東西。

嘗試此TwitterDetailVC.h:

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

@interface TwitterDetailVC : UIViewController 

@property (strong, nonatomic) TwitterPostInfo *tweetDetail; 

@end 

這對於TwitterDetailVC.m的viewDidLoad方法

- (void)viewDidLoad { 
    [super viewDidLoad]; 

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

無處不在,我已經使用tweetDetail在我上面發佈的代碼。我拉的所有對象都是字符串。這是一個自定義類 –

+0

當然,你必須從某處分配tweetDetail屬性。如果不是,你爲什麼要從viewDidLoad中獲取數據?你能告訴我你是如何將數據傳遞給這個類的? – travisjsmith

+0

我對編程仍然陌生,但數據正在傳遞中,不是嗎? –

0

最簡單的方式找到問題的位置在Xcode去斷點導航(Command + 7)。點擊底部的+,然後選擇「添加異常斷點」。現在,當你運行你的程序時,它將在發生異常時停止並向你顯示堆棧跟蹤而不是「未捕獲的異常」

相關問題