【发布时间】:2012-03-29 01:08:49
【问题描述】:
我正在为教师创建一个应用程序,用于存储课程和学生以及跟踪成绩。现在它设置在一个数据模型中,该模型将课程存储在一个数组中。课程是包含一系列学生和作业的对象。我有一个转换为学生表视图的所有课程的表视图。在课程详细信息视图中,我有一个表格视图单元格,它转换到作业的第三个表格视图。我的问题发生在这里。当我尝试向 tableview 添加分配时,出现错误:'NSInvalidArgumentException',原因:'-[__NSArrayI addObject:]: unrecognized selector sent to instance 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];中使用的 assignments 对象? -
“Assignment”对象被声明和构造为一个包含两个字符串和一个 ID 的类。作业数组被声明为 NSMutable 数组,作为 Course 对象的一部分。
-
初始化 assignments 数组的代码是什么样的?我还建议通过逐步调试代码来验证是哪一行导致了错误。我假设这是我上面引用的那个,因为这是您显示“addObject”的唯一地方,但很高兴知道这一点。
标签: objective-c