Question

Dans le délégué de l'application, j'ai créé un tableau pour les contrôleurs de vue multiples à référence. Cependant, lorsque j'essaie de mettre à jour le tableau en une seule vue, il apparaît vide dans l'autre.

Voir 1:

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
dataTempForSearch = appDelegate.myData;

J'ai ensuite un analyseur XML qui insère un objet dans le tableau.

- (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]];
    }
}

Cela renvoie tout bien en vue 1, mais en vue 2, j'ai:

- (void)viewDidLoad {
    MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
    dataTempForMap = appDelegate.myData;

    NSLog(@"myData appDelegate from: %@", dataTempForMap);      
}

Lorsque cette deuxième vue est chargée, le dataTempForMap Renvoie un tableau vide.

Était-ce utile?

La solution

Il est possible que vous réinitialisiez le tableau par rapport à celui peuplé d'origine. Je mettrais un point d'arrêt à l'endroit où tu fais

myData = [[NSMutableArray alloc] init];
Et voyez si on l'appelle plus souvent, alors vous pensiez.

Autres conseils

Je soupçonne que vous n'avez pas initialisé le tableau MyData dans le délégué. Tu devrais appeler

[[NSMutableArray alloc]init];  

dans ton

- (void)applicationDidFinishLaunching:(UIApplication *)application {

méthode. Sinon, le pointeur que vous récupérez du délégué ne pointe pas vers une instance de nsmutablearray

Je vérifierais ensuite auprès du débogueur que vous ne récupérez pas et que vous récupérez la même adresse. Si l'un ou l'autre n'est pas vrai, je soupçonne que l'ordre dans lequel les choses se produisent est le problème

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top