开发者

Passing NSMutableArray from delegate

开发者 https://www.devze.com 2023-02-16 15:03 出处:网络
I\'m doing an Iphone aplication and in the delegate class i call a method from another class which return a NSMutableArray filled with the information i need:

I'm doing an Iphone aplication and in the delegate class i call a method from another class which return a NSMutableArray filled with the information i need:

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

Now I want to pass this array into the viewController class so i can do things with my mutable array. I do the following:

...
[self.window开发者_如何学编程 addSubview:viewController.view];
[self.viewController loadLocations:array];
[self.window makeKeyAndVisible];

In delegate, the array is ok, it has the data i want, however, in the viewController class (which is a UIViewController) the array is messed up.

-(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


You're in trouble right from the beginning:

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

You're calling "initWithObjects" on "array", but you haven't allocated "array" yet.

You want something like:

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

or just :

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


This part is invalid:

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

The first line is not used because the second line is setting the array pointer to the result of [xml loadXML:]

I think this should suffice:

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

精彩评论

暂无评论...
验证码 换一张
取 消