如何在iPhone SDK中追加两个NSMutableArray或将NSArray与NSMutableArray合并?

4
我需要将两个NSMUtableArray连接起来,有人能建议一下如何实现吗?
我的代码是:
NSMutableArray *array1 = [appDelegate getTextList:1];
NSArray *array2 = [appDelegate getTextList:2];
[array1 addObjectsFromArray:array2];//I am getting exception here.

非常感谢任何人的帮助。

感谢大家,Lakshmi。


你收到了什么异常? - willcodejavaforfood
这是我得到的异常: - Laxmi G
2010-09-28 14:18:10.685 VoiceMessenger[3147:307] ***因未捕获的异常'NSGenericException'而终止应用程序,原因是:'***遍历时被改变的集合<__NSArrayM: 0x166090>为:( "<TextMsgObj: 0x17b200>", "<TextMsgObj: 0x17b370>", "<TextMsgObj: 0x17c090>", "<TextMsgObj: 0x17b260>", "<TextMsgObj: 0x17cb20>", "<TextMsgObj: 0x17d120>", "<TextMsgObj: 0x17d710>", "<TextMsgObj: 0x17dd40>", "<TextMsgObj: 0x17e320>", "<TextMsgObj: 0x17e950>", "<TextMsgObj: 0x17b200>" )' - Laxmi G
2个回答

13

可能发生的情况是,你的[appDelegate getTestList:1]实际上并没有返回一个NSMutableArray,而是一个NSArray。仅通过像那样持有指向它的指针对数组进行强制类型转换将不起作用,在这种情况下,请改用:

NSMutableArray *array1 = [[appDelegate getTextList:1] mutableCopy];
NSArray *array2 = [appDelegate getTextList:2];
[array1 addObjectsFromArray:array2];

或者你可以一开始就把你在 appDelegate 中的 'textList' 变量存储为 NSMutableArray。 我假设你有一个NSArray包含NSArrays(或它们的可变版本)。例如:

// In the class interface
NSMutableArray *textLists;

// In the function in which you add lists to the array
NSMutableArray *newTextList;
[self populateArray:newTextList]; // Or something like that

[textLists addObject:newTextList];

注意:你可能会有不同的工作流程,但我希望你能理解将实际列表存储为NSMutableArrays的想法。

另一个注意点:第二种方法直接修改[appDelegate getTextList:1];返回的NSMutableArray


实际上,我从 Xmlparser 获取列表,并将其存储在 NSMutableArray 中,如下所示:NSMutableArray *array1 = [appDelegate getTextList:1]; - Laxmi G
我的问题是,一开始我从解析器中获取了10个项目,并将其存储在NSMutableArray *textArrayList中。我将在整个控制器中使用此数组。当我点击“加载更多结果”按钮时,我会发送pagenumber参数,并再次获取下一个十个项目。我希望将这下一个十个项目附加到textArrayList中,并显示所有20个项目。 - Laxmi G

1

试试这个:

NSMutableArray *result = 
    [[appDelegate getTextList:1] mutableCopy] 
        addObjectsFromArray:[appDelegate getTextList:2]];

你遇到了异常,因为你试图向一个不可变数组发送可变的消息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接