1

エラーはTerminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MObject objectAtIndex:]: unrecognized selector sent to instanceと表示されます。それで、私がそれから得ているのは、MObject(NSObjectのサブクラス)のインスタンスが処理するつもりでないメッセージobjectAtIndex:を受け取っているということです。この「認識できないセレクタをインスタンスに送信」エラーを解決するにはどうすればよいですか?

詳細ビューに移動するためにテーブル行をタップするとエラーが発生します。これはUIWebView detailWebViewで構成されます。これはMObjectの選択されたインスタンスのNSStringのurl性を取るとちょうど基本[detailWebView loadRequest:[NSURLRequest requestWithURL:detailURL]]ない詳細ビューコントローラ用NSURLにそれを回すだ

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
MObjectDetailVC *mObjectDetailVC = [[MObjectDetailVC alloc] initWithNibName:@"MObjectDetailVC" bundle:nil]; 
mObjectDetailVC.detailURL = [[NSURL alloc] initWithString:[[[mcData objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] url]]; 
mObjectDetailVC.title = [[[mcData objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] name]; 
[self.navigationController pushViewController:mObjectDetailVC animated:YES]; 
[mObjectDetailVC release]; 
} 

次のようdidSelectRowAtIndexPathためのコードです。

ご意見がありましたら、お聞きしたいと思います。さらに詳しい情報が必要な場合は、私に知らせてください。

+0

'mcData'の構造は何ですか? NSArrayのNSArrayは本当ですか? – kennytm

+0

'mcData'は' MObject'の束からなるNSArrayです。したがって、各項目の代わりに配列内の 'NSObject'は、それぞれ配列内の' NSArray'である必要がありますか? – scojac

答えて

1

mcDataの構造を見てください。それとそのメンバーはあなたのコードに従ってNSArraysになると期待されていますが、それらが確実であることを確認してください。

+0

'mcData'は' MObject'の束からなる 'NSArray'です。つまり、配列内のNSObjectである各項目の代わりに、配列内のNSArrayである必要がありますか? – scojac

+0

コードが現在書かれている方法、それが期待されるものです、はい。 '[[mCData objectAtIndex:indexPath.section] objectAtIndex:indexPath.row]'行を見てください。これは配列内の配列を必要とします。 –

+0

Hm、それは私が意図したものではありません。ネストされた配列を探すのではなく、選択されたオブジェクトから 'url'と' name'を取るように、どうすれば変更できますか?それとも可能ですか? – scojac

0

objectAtIndex:は、NSArrayで定義されています。 MObjectクラスがNSObjectのサブクラスである場合は、objectAtIndex:メソッドが定義されていません。これはエラーの内容です。

次の呼び出しは、クラッシュ引き起こす両方:

mObjectDetailVC.detailURL = [[NSURL alloc] initWithString:[[[mcData objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] url]]; 
mObjectDetailVC.title = [[[mcData objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] name]; 

mcData[mcData objectAtIndex:indexPath.section]両方がNSArrayのか、そのサブクラスのオブジェクトを返すことを確認します。

0

あなたはrespondsToSelector経由でクラッシュを防ぐために、チェックを入れることができます。

あなたが特定のメッセージがクラッシュを避けるために、あなたを助ける渡す前にチェックを入れて http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html

で詳細を読むことができます。

関連する問題