私はコースや学生を保存し、成績を把握する先生向けのアプリケーションを作成しています。今は、コースを配列に格納するデータモデルに設定されています。コースは、学生と課題の配列を含むオブジェクトです。私は学生のテーブルビューに移行するすべてのコースのテーブルビューを持っています。コース詳細ビューでは、私は割り当てのための3番目のテーブルビューに移行するtableviewセルを持っています。私の問題はここで起きています。 [NSInvalidArgumentException]、理由: ' - [NSArrayI addObject:]:認識できないセレクタがインスタンス0x6b38620に送信されました' ..無効なセレクターがインスタンスに送信されました
ここに私が信じているコードがあります問題を含む可能性があります。
コースの詳細ビューコントローラ:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"AssignmentTable"]) {
AssignmentViewController *controller = segue.destinationViewController;
controller.checklist = checklistToEdit;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.row == 2)
{
[self performSegueWithIdentifier:@"AssignmentTable" sender:checklistToEdit];
}
}
割り当てビューコントローラ:
- (void)editAssignmentViewController:(EditAssignmentViewController *)controller didFinishAddingItem:(Assignment *)item
{
int newRowIndex = [self.checklist.assignments count];
[self.checklist.assignments addObject:item];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:newRowIndex inSection:0];
NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
[self dismissViewControllerAnimated:YES completion:nil];
}
割り当て詳細ビューコントローラ:
- (IBAction)done
{
if (assnToEdit == nil) {
Assignment *item = [[Assignment alloc] init];
item.texta = self.textFielda.text;
[self.delegate editAssignmentViewController:self didFinishAddingItem:item];
} else {
self.assnToEdit.texta = self.textFielda.text;
[self.delegate editAssignmentViewControllerDidCancel:self];
}
}
'[self.checklist.assignments addObject:item];'で使用する代入オブジェクトを宣言して作成するにはどうすればいいですか? –
"Assignment"オブジェクトは、2つの文字列とIDを含むクラスとして宣言され、構築されます。代入の配列は、NSMutable配列としてCourseオブジェクトの一部として宣言されます。 – user1170015
割り当て配列を初期化する場所はどのようなコードですか?また、実際の行によってエラーが発生しているかどうかを確認してコードをデバッグすることをお勧めします。私はそれがあなたが 'addObject'を表示する唯一の場所だから、上に引用したものだと思っていますが、確かに知っているといいでしょう。 –