0

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

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

注意,SurveyAnswerScreenOne是一个NSMutableArray

4

3 回答 3

2

您可以通过多种方式做到这一点 -

NSArray * myArray = [appDelegate.surveyAnswersScreenOne copy];

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

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

但首先你appDelegate.surveyAnswersScreenOne应该有对象。

于 2012-09-24T10:37:49.560 回答
0

从我们在这里看到的情况来看,您的可变数组很可能是 nil。在您的应用程序委托中查看它的创建。如果创建正确,请检查它是否保留。它是一个强有力的参考吗?

@propery(nonatomic, strong) NSMutableArray *surveyAnswersScreenOne;

一方面,我会使用方便的方法:

myArray = [NSArray arrayWithArray:appDelegate.surveyAnswersScreenOne];

如果surveyAnswersScreenOne 是一个有效的数组,可变的或其他的,这应该有效。尝试将其打印到控制台以确保。如果surveyAnswersScreenOne 为nil,这将返回空数组,其中alloc initWithArray 将失败。像这样检查你的可变数组。

NSLog(@"Mutable array is %@", appDelegate.surveyAnswersScreenOne);
于 2012-09-24T10:40:42.180 回答
0

你为你的对象做了对象appDelegate吗?

appDelegate = (yourDelegateClass *)[[UIApplication sharedApplication]delegate];

如果是,那么其他答案应该有效!

myArray = [NSArray arrayWithArray:appDelegate.surveyAnswersScreenOne];
于 2012-09-24T10:45:30.640 回答