Pregunta

En el delegado de la aplicación, creé una matriz para múltiples controladores de vista para hacer referencia. Sin embargo, cuando intento actualizar la matriz en una vista, aparece vacío en el otro.

Ver 1:

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

Luego tengo un analizador XML que inserta un objeto en la matriz.

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

Esto devuelve todo bien a la vista 1, pero a la vista 2 tengo:

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

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

Cuando se carga esta segunda vista, el dataTempForMap Devuelve una matriz vacía.

¿Fue útil?

Solución

Es posible que esté reinicializando la matriz sobre la población original. Pondría un punto de interrupción en el lugar donde estás haciendo

myData = [[NSMutableArray alloc] init];
Y vea si se llama con más frecuencia, entonces pensaste.

Otros consejos

Sospecho que no ha inicializado la matriz MyData en el delegado. Deberías estar llamando

[[NSMutableArray alloc]init];  

en tus

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

método. De lo contrario, el puntero que está recuperando del delegado no apunta a una instancia de nsmutableArray

Luego verificaría con el depurador que no está recuperando a nulo y que está recuperando la misma dirección. Si alguno de estos no es cierto, sospecho que el orden en el que están sucediendo las cosas es el problema

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top