addObject到NSMutableArray中的NSMutableArray
我有我的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只分配了太多的内存,但我会认为这个数组只是一个引用数组,不会有这个问题。我可能是错的 - 这不是第一次。
在此先感谢您的包装。
你是如何初始化数组及其内部的值?我认为你有一个不可变的数组。
另外一个NSMutableArray具有可变大小,调用initWithSize是完全不必要的。如果需要的话,数组将会调整大小。
在这个视图中,我使用 加载了来自NSDefaults的objData self.objData = [defau lts mutableArrayValueForKey:kObjDataDefaultKey]; 它被创建并保存在另一个视图中。 我不确定您对initWithSize评论的意思。 –
沿着这些线进一步搜索 - 看起来NSDefaults出来的东西变得不可变。我将不得不寻找替代品或解决方法。谢谢! –
对此使用[[NSMutableARray alloc] initWithArray。 –
你会得到什么错误?我在想外层数组实际上是一个NSArray,而不是一个NSMutableArray,所以你不能添加一个对象。但是,不,没有记忆问题;你对引用数组是正确的。 – matt
嗨马特,我只是得到“程序接收到的信号:”SIGABRT“。控制台味精:***终止应用程序由于未捕获的异常'NSInternalInconsistencyException',原因:' - [__ NSCFArray insertObject:atIndex:]:mutating方法发送到不可变对象' 你可能会对NSArray的问题,但我看到的一切,似乎都是可变的。 –
是的,我是对的 - 你有一个不可变的NSArray,你试图添加一个你不能这样做 - 记住,你可以调用你的对象任何你喜欢的东西,但是对象有自己的天生类型 - 重要的不是你如何输入或描述它,而是它的内在本质,内在的 – matt