アプリケーション デリゲートでは、複数のビュー コントローラーが参照する配列を作成しました。ただし、一方のビューで配列を更新しようとすると、もう一方のビューでは空になります。
ビュー 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
は空の配列を返します。