如何将NSMutableArray的内容复制到iphone应用程序中的另一个NStArray?

如何将NSMutableArray的内容复制到iphone应用程序中的另一个NStArray?,iphone,nsmutablearray,nsarray,Iphone,Nsmutablearray,Nsarray,我有两个数组,一个是NSMutableArray,一个是NSArray我想在NSArray中存储NSMutableArray的内容,但它对我不起作用,因为发送了无法识别的异常选择器 myArray=[[NSArray alloc] initWithArray:appDelegate.surveyAnswersScreenOne]; 注意,SurveyAnswerScreenOne是一个NSMutableArray您可以通过多种方式实现- NSArray * myArray = [appDele

我有两个数组,一个是NSMutableArray,一个是NSArray我想在NSArray中存储NSMutableArray的内容,但它对我不起作用,因为发送了无法识别的异常选择器

myArray=[[NSArray alloc] initWithArray:appDelegate.surveyAnswersScreenOne];

注意,
SurveyAnswerScreenOne
是一个
NSMutableArray

您可以通过多种方式实现-

NSArray * myArray = [appDelegate.surveyAnswersScreenOne copy];

NSArray * myArray = [NSArray arrayWithArray:appDelegate.surveyAnswersScreenOne];

NSArray * myArray = [[NSArray alloc]initWithArray:appDelegate.surveyAnswersScreenOne];

但首先,您的appDelegate.surveyAnswersScreenOne中应该包含对象。

从我们这里看到的情况来看,您的可变数组很可能为零。查看应用程序中代理的创建。如果创建正确,请检查是否保留该文件。这是一个强有力的参考吗

@propery(nonatomic, strong) NSMutableArray *surveyAnswersScreenOne;
首先,我会使用便利法:

myArray = [NSArray arrayWithArray:appDelegate.surveyAnswersScreenOne];
如果surveyAnswersScreenOne是一个有效的数组,可以是可变的,也可以是其他的,这应该是可行的。请尝试将其打印到控制台以确保。如果surveyAnswersScreenOne为nil,则返回空数组,其中alloc initWithArray将失败。 像这样检查可变数组

NSLog(@"Mutable array is %@", appDelegate.surveyAnswersScreenOne);

您是否为您的
appDelegate
创建了对象?

appDelegate = (yourDelegateClass *)[[UIApplication sharedApplication]delegate];
如果是,那么其他答案也应该有效

myArray = [NSArray arrayWithArray:appDelegate.surveyAnswersScreenOne];

不可能!首先尝试打印appDelegate.surveyAnswersScreenOne数组。。。你说appDelegate.surveyAnswersScreenOne是一个可变数组。NSMutableArray*surveyAnswersScreenOne我在appDelegate中是这样声明的。你如何创建appDelegate对象?这应该声明为appDelegate=(appDelegate*)[[UIApplication sharedApplication]delegate];实际上,NSMutableArray是NSArray的一个子类。我相信你可以用它启动一个数组。我肯定有很多次。创建可变内容、按摩内容并传递由可变内容制成的可变内容。非常常见的做法。是的,谢谢,我正在检查NSMutableArray中的问题。它是空的,我想您确定不可识别的选择器会因此而来。放置断点以再次检查崩溃点。检查appDelegate是否有引用和NSlog appDelegate.surveyAnswersScreenOne如果appDelegate.surveyAnswersScreenOne有值,则myArray=[[NSArray alloc]initWithArray:[appDelegate.surveyAnswersScreenOne copy];是的,我已经查过了,但不是为我工作,我不知道为什么你把那个NSLog放进去了。您需要后退一步,确保您的对象都是有效的。我们需要更多地查看您的代码,您需要更准确地定位异常发生的位置。在创建数组之前设置一个断点,然后单步执行以精确查看哪个调用失败。复制数组时发生异常。是否尝试我的建议?您的可变数组是有效数组吗?你有没有试着用便利的方法来代替你所拥有的?