Frage

Im Anwendungsdelegierten habe ich ein Array für mehrere Ansichtscontroller erstellt. Wenn ich jedoch versuche, das Array in einer Ansicht zu aktualisieren, kommt es in der anderen leer.

Ansicht 1:

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

Ich habe dann einen XML -Parser, der ein Objekt in das Array einfügt.

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

Dies gibt alles gut in Ansicht 1 zurück, aber in Ansicht 2 habe ich:

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

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

Wenn diese zweite Ansicht geladen ist, die dataTempForMap Gibt ein leeres Array zurück.

War es hilfreich?

Lösung

Es ist möglich, dass Sie das Array über dem ursprünglichen besiedelten neu initialisieren. Ich würde einen Haltepunkt an die Stelle setzen, an der Sie sich machen

myData = [[NSMutableArray alloc] init];
Und sehen Sie, ob es öfter genannt wird, als Sie gedacht haben.

Andere Tipps

Ich vermute, dass Sie das MyData -Array im Delegierten nicht initialisiert haben. Sie sollten anrufen

[[NSMutableArray alloc]init];  

in deiner

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

Methode. Andernfalls zeigt der Zeiger, den Sie aus dem Delegierten zurückholen

Ich würde mich dann bei dem Debugger erkundigen, dass Sie NIL nicht zurückbekommen und dass Sie dieselbe Adresse zurückerhalten. Wenn eines davon nicht wahr ist, vermute ich, dass die Reihenfolge, in der Dinge geschieht, das Problem ist

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top