更新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);
}
加载第二个视图时 dataTempForMap
返回一个空数组。
解决方案
您可能正在重新对原始人群的阵列重新定位阵列。我会在您做的地方放一个断点
myData = [[NSMutableArray alloc] init];看看它是否经常被调用,然后您想。
其他提示
我怀疑您尚未在代表中初始化MyData阵列。你应该打电话
[[NSMutableArray alloc]init];
在你的
- (void)applicationDidFinishLaunching:(UIApplication *)application {
方法。否则,您要从代表回来的指针并没有指向nsmutablearray的实例
然后,我会向调试器核实您没有零回来,并且您正在获得相同的地址。如果其中的任何一个不是真的,我怀疑发生的事情发生的顺序就是问题
不隶属于 StackOverflow