在我的viewDidLoad
上,我从网络服务加载数组的前5项并将它们放在我的NSMutableArray
上。此外,在此视图中,我UITableViewController
显示我的NSMutableArray
项目以及来自网络服务的内容。当我滚动到UITableView
的最后一项时,我正在从webservice加载5个下一个项目并将它们添加到我的NSMutableArray
并重新加载表格数据以显示所有10个项目。
问题在于,当我尝试向现有NSMutableArray
添加来自网络服务的5个新对象时,程序崩溃并显示以下消息:Exception: -[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object
我访问NSMutableArray
中的cellForRowAtIndexPath:
的方式如下:
cell.textLabel.text = [[self.myMutableArray objectAtIndex:indexPath.row]objectForKey:@"name"];
关于它可能是什么的任何想法?
答案 0 :(得分:3)
首先,在编译器输出中查找警告。您可能正在为NSArray
变量分配NSMutableArray
。这通常会产生警告。你的构建应该没有警告。这对ObjC代码至关重要(很多事情你会想到“错误”只是ObjC中的警告)。如果你忽略了警告,那么你会遇到很多问题。
如果某些内容投放到id
,您可以在不创建警告的情况下出现这种情况。例如,如果您从数组或字典中获取“NSMutableArray
”(实际上是NSArray
),则不会收到有关类型不匹配的警告。寻找这些情况。基本上,审核您指定的每个点myMutableArray
,并确保您实际上正在分配一个可变数组。