NSMutableArray と NSArray の 2 つの配列があります。NSMutableArray の内容を NSArray に保存したいのですが、認識されないセレクターが送信され、例外が発生して動作しません。
myArray=[[NSArray alloc] initWithArray:appDelegate.surveyAnswersScreenOne];
注、SurveyAnswerScreenOne
はNSMutableArray
NSMutableArray と NSArray の 2 つの配列があります。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;
1 つには、便利な方法を使用します。
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];