Вопрос

В делегате приложения я создал массив для контроллеров с несколькими представлениями для ссылки. Однако, когда я пытаюсь обновить массив в одном представлении, он появляется пустым в другом.

Просмотр 1:

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

Затем у меня есть анализатор XML, который вставляет объект в массив.

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

Это возвращает все хорошо в виде 1, но в виде 2 у меня есть:

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

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

Когда этот второй вид загружен, dataTempForMap Возвращает пустой массив.

Это было полезно?

Решение

Вполне возможно, что вы ренициализуете массив по сравнению с оригинальной заселенной. Я бы положил точку останова на месте, где ты делаешь

myData = [[NSMutableArray alloc] init];
И посмотрите, называется ли это чаще, тогда вы подумали.

Другие советы

Я подозреваю, что вы не инициализировали массив Mydata в делегате. Вы должны звонить

[[NSMutableArray alloc]init];  

в твоей

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

метод В противном случае указатель, который вы возвращаетесь от делегата, не указывает на экземпляр NSMutableArray

Затем я бы проверил с отладчиком, что вы не вернете NIL и что вы получаете один и тот же адрес обратно. Если кто -то из них не правда, я подозреваю, что порядок, в котором происходит все, является проблемой

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top