Передача NSMutableArray от делегата - PullRequest
0 голосов
/ 10 марта 2011

Я делаю приложение для 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 ]

2 голосов
/ 10 марта 2011

У вас проблемы с самого начала:

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

Вы вызываете "initWithObjects" для "массива", но вы еще не выделили "массив".

Вы хотите что-то вроде:

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

или просто:

NSMutableArray *array = [[NSMutableArray alloc] init];
1 голос
/ 10 марта 2011

Эта часть неверна:

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

Первая строка не используется, потому что вторая строка устанавливает указатель массива на результат [xml loadXML:]

Я думаю, этого должно быть достаточно:

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