aggiornando una variabile in appDelegate
-
19-09-2019 - |
Domanda
Nel delegato dell'applicazione, ho creato un array a cui fare riferimento più controller di visualizzazione.Tuttavia, quando provo ad aggiornare l'array in una vista, nell'altra risulta vuoto.
Vista 1:
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
dataTempForSearch = appDelegate.myData;
Ho quindi un parser xml che inserisce un oggetto nell'array.
- (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]];
}
}
Questo restituisce tutto bene nella vista 1, ma nella vista 2 ho:
- (void)viewDidLoad {
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
dataTempForMap = appDelegate.myData;
NSLog(@"myData appDelegate from: %@", dataTempForMap);
}
quando questa seconda vista viene caricata, il file dataTempForMap
restituisce un array vuoto.
Soluzione
È possibile che tu stia renizializzando l'array rispetto a quello popolato originale. Metterei un punto di interruzione sul punto in cui stai facendo
myData = [[NSMutableArray alloc] init];E vedi se viene chiamato più spesso, allora pensavi.
Altri suggerimenti
Sospetto che tu non abbia inizializzato l'array myData nel delegate.Dovresti chiamare
[[NSMutableArray alloc]init];
nel tuo
- (void)applicationDidFinishLaunching:(UIApplication *)application {
metodo.Altrimenti il puntatore che ricevi dal delegato non punta a un'istanza di NSMutableArray
Vorrei quindi verificare con il debugger che non stai ottenendo alcun ritorno e che stai ricevendo lo stesso indirizzo.Se una di queste ipotesi non è vera, sospetto che il problema sia l’ordine in cui stanno accadendo le cose