как разобрать значение массива одного класса другому и другого другому? - PullRequest
0 голосов
/ 20 августа 2011
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section == 1 && indexPath.row == 0) {

    NSString *requestString = [NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/directions/xml?origin=%@&destination=%@,OK&sensor=false",startField.text,endField.text]; 

    NSURL *url = [[NSURL alloc] initWithString:requestString];
    NSData *tempData =[[NSData alloc] initWithContentsOfURL:url];

    NSString *Str  = [[NSString alloc] initWithData:tempData encoding:NSUTF8StringEncoding];



    NSLog(@"%@",Str);
    NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];


    //Initialize the delegate.
    xml1 *parser = [[xml1 alloc] init];

    //Set delegate
    [xmlParser setDelegate:parser];


    //Start parsing the XML file.
    BOOL success = [xmlParser parse];

    if(success){
        NSLog(@"No Errors");
        arySteps=[[NSMutableArray alloc]init];
        arySteps=[parser.ListofSteps1 mutableCopy];

    }
    else
        NSLog(@"Error Error Error!!!");

    controller.arayStep=[[NSMutableArray alloc]init];
    controller.arayStep=[parser.ListofSteps1 copy];
    controller= [[TableView alloc] initWithNibName:@"TableView" bundle:nil];


     [self.navigationController pushViewController:controller animated:YES];
     [controller release];
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

}

В приведенном выше коде я проанализировал данные XML.В файле XML-парсера я храню объекты в массиве ListofSteps1.Теперь я обращаюсь к классу контроллера root-view, который показан в коде выше.Поэтому в классе root-view ListofSteps1 присвойте значение массиву контроллера root-view.Теперь я хочу присвоить значение массива контроллера корневого представления массиву следующего представления, которое также поддерживается в приведенном выше коде, но массив следующего представления не получает значения.В чем проблема в этом коде, чтобы он не получал значение?

1 Ответ

1 голос
/ 20 августа 2011

Есть пара вещей, которые не так с вашим кодом выше. Вы выделяете и инициируете новый массив только для записи поверх него в двух отдельных случаях в реализации вашего метода:

arySteps=[[NSMutableArray alloc]init]; // This line serves absolutely no purpose
arySteps=[parser.ListofSteps1 mutableCopy]; // This line is sufficient on its own

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

controller= [[TableView alloc] initWithNibName:@"TableView" bundle:nil];
controller.arayStep=[parser.ListofSteps1 copy];

Эти ошибки очень просты и указывают на то, что вам нужно поработать над основами, прежде чем вы сможете продвинуться дальше. Я бы посоветовал вам взять хорошую книгу по Objective-C - например, Программирование в Objective-C Стивена Кочана - и внимательно ее прочитать. Твердое понимание основных концепций поможет вам в дальнейшем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...