AppDelegateの変数を更新します
-
19-09-2019 - |
質問
アプリケーションデリゲートでは、複数のビューコントローラーが参照するための配列を作成しました。ただし、あるビューで配列を更新しようとすると、他のビューでは空になります。
ビュー1:
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
dataTempForSearch = appDelegate.myData;
次に、アレイにオブジェクトを挿入するXMLパーサーを持っています。
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"CompanyName"]) {
// save values to an item, then store that item into the array...
[item setObject:currentTitle forKey:@"title"];
[item setObject:currentAddress forKey:@"address"];
[item setObject:currentCity forKey:@"city"];
[item setObject:currentCountry forKey:@"country"];
[dataTempForSearch addObject:[item copy]];
}
}
これにより、ビュー1ですべてが正常に返されますが、ビュー2には次のことがあります。
- (void)viewDidLoad {
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
dataTempForMap = appDelegate.myData;
NSLog(@"myData appDelegate from: %@", dataTempForMap);
}
この2番目のビューがロードされると、 dataTempForMap
空の配列を返します。
解決
元の人口型の配列よりもアレイを再現している可能性があります。私はあなたがしている場所にブレークポイントを置きます
myData = [[NSMutableArray alloc] init];そして、あなたが思っていたよりも頻繁に呼ばれているかどうかを確認してください。
他のヒント
私はあなたがデリゲートのmyDataアレイを初期化していないと思う。あなたは電話するべきです
[[NSMutableArray alloc]init];
あなたの中で
- (void)applicationDidFinishLaunching:(UIApplication *)application {
方法。それ以外の場合、あなたが代表者から戻っているポインターは、nsmutablearrayのインスタンスを指していません
次に、デバッガーに、あなたがNILを取り戻していないこと、そしてあなたが同じアドレスを取り戻していることを確認します。これらのいずれかが真実でない場合、私は物事が起こっている順序が問題だと思う
所属していません StackOverflow