我有我的UITableView
数据组织,使表的部分是NSMutableArray
的数组元素。每个元素本身是NSMutablearray
的NSMutableDictionary
,表示每个部分的行和每行的数据。addObject到NSMutableArray中的NSMutableArray
当我创建这个,我加载所有的数据,并创建每个部分的NSMutableArray,然后将它们一次一个地添加到“外部”NSMutableArray
。我通过以下参考行:
[[[objData objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] objectForKey:@"name"]
并且这样做没有问题。我认为这里的优势是我可以拥有可变数量的部分,我需要这些部分,并且每个部分都有可变数量的行,这也是一项要求。
但是,当我尝试向某个节添加行时,会出现错误。
[[objData objectAtIndex:0] addObject:[[NSMutableDictionary alloc] initWithObjectsAndKeys: objectID,@"id",nameVar,@"name",nil]];
不起作用。这是问题所在,还是与我放置阵列的方式有关?我在想内部的NSMutableArray只分配了太多的内存,但我会认为这个数组只是一个引用数组,不会有这个问题。我可能是错的 - 这不是第一次。
在此先感谢您的包装。
你会得到什么错误?我在想外层数组实际上是一个NSArray,而不是一个NSMutableArray,所以你不能添加一个对象。但是,不,没有记忆问题;你对引用数组是正确的。 – matt
嗨马特,我只是得到“程序接收到的信号:”SIGABRT“。控制台味精:***终止应用程序由于未捕获的异常'NSInternalInconsistencyException',原因:' - [__ NSCFArray insertObject:atIndex:]:mutating方法发送到不可变对象' 你可能会对NSArray的问题,但我看到的一切,似乎都是可变的。 –
是的,我是对的 - 你有一个不可变的NSArray,你试图添加一个你不能这样做 - 记住,你可以调用你的对象任何你喜欢的东西,但是对象有自己的天生类型 - 重要的不是你如何输入或描述它,而是它的内在本质,内在的 – matt