2016-11-28 4 views
1

У меня есть 2 экрана, в 1-м, когда я нажимаю кнопку, он должен перейти на 2-й экран, получить данные с сервера и отобразить в виде таблицы на 2-м экране. я не в состоянии отображать данные в виде таблицыданные с сервера не отображаются в табличном представлении

#import "FirstTableViewController.h" 

@interface FirstTableViewController()<NSXMLParserDelegate> 
@property(nonatomic,strong)NSXMLParser*xmlparse; 
@property(nonatomic,strong)NSMutableString*tempstr; 
@property(nonatomic,strong)NSMutableArray*arr; 

@end 

@implementation FirstTableViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    NSMutableURLRequest*req=[[NSMutableURLRequest alloc]init]; 
    NSURL*url=[NSURL URLWithString:@"http://www.thomas-bayer.com/sqlrest/CUSTOMER/"]; 
    [req setURL:url]; 
    [[[NSURLSession sharedSession]dataTaskWithRequest:req completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { 
     // SMXMLDocument *document = [SMXMLDocument documentWithData:data error:&error]; 

     NSString*str=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 
     _xmlparse=[[NSXMLParser alloc]initWithData:data]; 
     _xmlparse.delegate=self; 
     [_xmlparse parse]; 
    }] resume]; 
    [_table reloadData]; 
} 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ 
    _tempstr=[[NSMutableString alloc]initWithString:string]; 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName attributes:(NSDictionary<NSString *, NSString *> *)attributeDict;{ 
    if([elementName isEqualToString:@"CUSTOMER"]){ 
     self.tempstr=[[NSMutableString alloc]init]; 

    } 
    if([elementName isEqualToString:@"CUSTOMERList"]){ 
     self.arr=[[NSMutableArray alloc]init]; 

    } 

} 
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName;{ 

    if([elementName isEqualToString:@"CUSTOMER"]){ 
     [_arr addObject:self.tempstr]; 
     self.tempstr=nil; 
    } 
    // NSLog(@"arr is %@",self.arr); 
} 
#pragma mark - Table view data source 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return self.arr.count; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cel" forIndexPath:indexPath]; 

    cell.textLabel.text=[self.arr objectAtIndex:indexPath.row]; 
    return cell; 
} 

@end 

ответ

1

сделать две вещи

Первый

- (void)viewDidLoad { 
[super viewDidLoad]; 

arr = [NSMutableArray array]; // initilize the memory of array 

NSMutableURLRequest*req=[[NSMutableURLRequest alloc]init]; 
NSURL*url=[NSURL URLWithString:@"http://www.thomas-bayer.com/sqlrest/CUSTOMER/"]; 
[req setURL:url]; 
[[[NSURLSession sharedSession]dataTaskWithRequest:req completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { 
    // SMXMLDocument *document = [SMXMLDocument documentWithData:data error:&error]; 

    NSString*str=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 
    _xmlparse=[[NSXMLParser alloc]initWithData:data]; 
    _xmlparse.delegate=self; 
    [_xmlparse parse]; 
}] resume]; 

} 

Второй

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName;{ 

if([elementName isEqualToString:@"CUSTOMER"]){ 
    [_arr addObject:self.tempstr]; 
    [email protected]""; 
} 

if(arr.count >0) 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
      [_table reloadData]; 
     }); 

    } 

} 
+0

бро ... он не работает – Nishanth

+0

с моим кодом .... нет строк в разделе возвращающей 0 – Nishanth

+0

вы получили выход 'arr' –

 Смежные вопросы

  • Нет связанных вопросов^_^