0

NSMutableArray と NSArray の 2 つの配列があります。NSMutableArray の内容を NSArray に保存したいのですが、認識されないセレクターが送信され、例外が発生して動作しません。

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

注、SurveyAnswerScreenOneNSMutableArray

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;

1 つには、便利な方法を使用します。

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 に答える