1

エラーは読み取りますTerminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MObject objectAtIndex:]: unrecognized selector sent to instance。つまり、MObject のインスタンス (NSObject のサブクラス) が、objectAtIndex:処理対象外のメッセージを受信して​​いるということです。

UIWebView で構成される詳細ビューに移動するためにテーブル行をタップすると、エラーが発生しますdetailWebView。のコードdidSelectRowAtIndexPathは次のとおりです。

- (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];
}

の選択されたインスタンスの NSStringurlプロパティを取得しMObject、それを詳細ビュー コントローラーの NSURL に変換します。これは基本的な[detailWebView loadRequest:[NSURLRequest requestWithURL:detailURL]].

ご提案がありましたら、喜んで承ります。さらに情報が必要な場合は、お知らせください。

4

3 に答える 3

1

の構造を見てみましょうmcData。それとそのメンバーは、コードによると NSArrays であると予想されます。そうであることを確認してください。

于 2011-02-08T03:04:54.270 に答える
0

RespondsToSelector を介してクラッシュを防ぐためにチェックを入れることができます。

詳細は次の URL でご覧いただけます http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html

特定のメッセージを渡す前にチェックを入れると、クラッシュを回避するのに役立ちます。

于 2011-02-08T16:54:12.450 に答える
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

于 2011-02-08T03:06:59.767 に答える