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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top