更新appDelegate中的变量

时间:2009-11-09 16:49:14

标签: objective-c uiapplicationdelegate

在应用程序委托中,我为多个视图控制器创建了一个数组以供参考。但是,当我尝试在一个视图中更新数组时,它在另一个视图中显示为空。

查看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返回一个空数组。

2 个答案:

答案 0 :(得分:0)

我怀疑你没有在委托中初始化myData数组。你应该打电话

[[NSMutableArray alloc]init];  

中的

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

方法。否则,您从委托中返回的指针不指向NSMutableArray的实例

然后我会检查调试器,你没有得到nil,并且你得到了相同的地址。如果其中任何一个都不正确,我怀疑发生事情的顺序是问题

答案 1 :(得分:0)

您可能会在原始填充的阵列上重新初始化阵列。我会在你正在做的地方放置一个断点

myData = [[NSMutableArray alloc] init];
,看看它是否被更频繁地调用然后你想到了。