从委托传递NSMutableArray

时间:2011-03-10 18:49:40

标签: iphone objective-c cocoa-touch delegates nsmutablearray

我正在做一个Iphone应用程序,在委托类中我从另一个类调用一个方法,该方法返回一个填充了我需要的信息的NSMutableArray:

NSMutableArray *array = [[NSMutableArray initWithObjects:nil] retain];
array = [xml loadXML:@"info.xml"];

现在我想将这个数组传递给viewController类,这样我就可以使用我的可变数组。我做了以下事情:

...
[self.window addSubview:viewController.view];
[self.viewController loadLocations:array];
[self.window makeKeyAndVisible];

在委托中,数组没问题,它有我想要的数据,但是,在viewController类(这是一个UIViewController)中,数组搞砸了。

-(void)loadLocations:(NSMutableArray*)_array{
    NSLog(@"%f", [[_array objectAtIndex:0] lat]); // This sould be 42.000 but it is 0.00000 and all of the other indexes

2 个答案:

答案 0 :(得分:2)

你从一开始就遇到麻烦:

NSMutableArray *array = [[array initWithObjects:nil] retain];

你在“数组”上调用“initWithObjects”,但你还没有分配“数组”。

你想要这样的东西:

NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:nil];

或只是:

NSMutableArray *array = [[NSMutableArray alloc] init];

答案 1 :(得分:1)

这部分无效:

NSMutableArray *array = [[array initWithObjects:nil] retain];
array = [xml loadXML:@"info.xml"];

第一行未使用,因为第二行是将数组指针设置为[xml loadXML:]的结果

我认为这应该足够了:

NSMutableArray *array = [[NSMutableArray alloc] initWithArray:[xml loadXML:@"info.xml"]];