- (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-parser文件中,我将数组中的存储对象设为ListofSteps1。现在我访问root视图控制器类,如上面的代码所示。所以在root-view类中ListofSteps1为根视图控制器的数组赋值。现在我想将根视图控制器的数组值分配给下一个视图的数组,该数组也在上面的代码中保存,但是下一个视图的数组没有获得值。这段代码有什么问题,所以没有价值?
答案 0 :(得分:1)
上面的代码有几个问题。您只需在方法实现中的两个不同场合分配并初始化一个新数组:
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的好书 - 例如Programming in Objective-C by Stephen Kochan - 并仔细阅读。对核心概念的深刻理解将为您提供良好的发展。