Objective c addObjectsFromArray返回错误

Objective c addObjectsFromArray返回错误,objective-c,arrays,Objective C,Arrays,我试图使用addObjectsFromArray将两个数组“连接”(也就是说)在一起。下面是代码的概述: NSArray *fixed = [NSArray arrayWithArray:timeline2]; NSLog(@"Made the temp successfully.Contents: %@", fixed); [arrayOfNewsItems addObjectsFromArray:fixed]; Log语句可以确认“fixed”和“timeline2”数组中存在有效数据,

我试图使用addObjectsFromArray将两个数组“连接”(也就是说)在一起。下面是代码的概述:

NSArray *fixed = [NSArray arrayWithArray:timeline2];
NSLog(@"Made the temp successfully.Contents: %@", fixed);

[arrayOfNewsItems addObjectsFromArray:fixed];
Log语句可以确认“fixed”和“timeline2”数组中存在有效数据,在程序的前面,我确认了“arrayOfNewsItems”数组中存在数据

尝试添加对象后收到的异常。。这是:

'NSInternalInconsistencyException', reason: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'
arrayOfNewsItems是一个NSMutableArray。这是一笔财产。实际上,它是这样宣布的:

@property (nonatomic) NSMutableArray * arrayOfNewsItems;
也许是“非原子”的说法?我也不完全理解这些

我唯一能想到的是,每个数组中的数组元素都有不同的对象类型——或者更确切地说,尽管它们都是dictionary对象的数组,但对象本身由不同的键/值对列表组成。例如:

数组元素1可能包含:

(key)                 (value)
name                   Joe
title                  Mr.
(key)                 (value)
phone                 555-1263
shoeSize              2
和数组元素2可能包含:

(key)                 (value)
name                   Joe
title                  Mr.
(key)                 (value)
phone                 555-1263
shoeSize              2
现在,在任何其他语言中,我都不会尝试这样做,但我很确定我在之前的帖子中被告知这样做是可以的。我知道objective-c将它们存储为(id),我们可以像那样将其中的所有内容混合在一起。因此,问题是:

  • 这是真的吗
  • 如果是,我错过了什么
在我开始编写一个函数,使最终数组的所有字段名都相同之前,我希望得到一个可靠的答案


我当然会感谢任何和所有的帮助,我可以得到!谢谢。

很清楚:
将变异方法发送到不可变对象

这意味着您有一个不可变的
NSArray
实例

尽管它被定义为
NSMutableArray
,但并不意味着它真的是一个。它仅在尝试调用变异方法(如
-addObjectsFromArray:
)时删除警告

您必须确保在创建数组时,将alloc/init发送到可变版本:

self.arrayOfNewsItems = [[[NSMutableArray alloc] init] autorelease];

我在这里看到了“key”和“value”,但您谈论的是数组,而不是字典。数组中的项目是“
NSDictionary
”对象还是它们是什么?您在哪里设置
arrayOfNewsItems
?@RichardJ.RossIII我认为这也是错误所在。看我的答案;)您是否在S.O.中搜索“mutating method sent to immutable object”以查看这些Q&A是否有帮助?该数组是一个字典数组,我在文章中提到过,但我应该在示例中指定:“Array1 element 1”和“Array2 element 1”。在viewController的加载过程中,它在另一个函数中初始化。即使它是一个属性,我也必须在内部使用之前进行alloc和init?我刚刚检查过,并且在前面使用:arrayOfNewsItems=[[NSMutableArray alloc]init]将数组初始化为可变的;--但它的功能不同,这是不可能的。你能在GitHub上主持你的整个项目并共享链接吗?另外,请尝试记录
[self.arrayOfNewsItems类]
。我不完全确定您在说什么。在你看来,我所说的哪一部分是不可能的?我并不以任何方式自称是专家,但我向你保证,我无意做出任何虚假的声明。在这个时候,我觉得发布整个项目并不舒服。现在,向前看,我可以提供一个更新,我将数组更改为一个简单的实例变量,但仍然得到相同的错误。另外-我不知道如何使用您提供的…类方法。这是干什么用的?顺便说一句,我使用的是ARC,所以自动释放是被禁止的。你不可能实例化一个可变版本并得到上面提到的错误。如果你不共享代码,我将无法帮助你。