我有两个数组,一个是 NSMutableArray,一个是 NSArray 我想将 NSMutableArray 的内容存储在 NSArray 中,但它对我不起作用,会发送无法识别的选择器异常。
myArray=[[NSArray alloc] initWithArray:appDelegate.surveyAnswersScreenOne];
注意,SurveyAnswerScreenOne
是一个NSMutableArray
我有两个数组,一个是 NSMutableArray,一个是 NSArray 我想将 NSMutableArray 的内容存储在 NSArray 中,但它对我不起作用,会发送无法识别的选择器异常。
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
应该有对象。
从我们在这里看到的情况来看,您的可变数组很可能是 nil。在您的应用程序委托中查看它的创建。如果创建正确,请检查它是否保留。它是一个强有力的参考吗?
@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];