2015-10-26 3 views
-2

Ниже представлен мой файл .m. Я объявляю NSMutableArray в .h файле, но он все еще не может отобразить мой массив от xmlparser до UITableView. Прошу вас, руководствуясь приведенным ниже кодом. Скорее всего, это мои таблицы таблиц, поскольку я могу вывести данные из массива фида. Я также перезагружаю контроллер табличного представления.iOS Не удалось отобразить NSMutableArray для TableView

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // output = [[NSMutableArray alloc]initWithObjects:@"red",@"green", nil]; 
    NSLog(@"Response recieved"); 
    output= [[NSMutableArray alloc] init]; 
    feeds = [[NSMutableArray alloc] init]; 
// NSString *severity = @"Informational"; 
    NSString *soapMessage = @"<?xml version=\"1.0\" encoding=\"utf-8\"?>" 
    "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" 
          "<soap:Body>" 
          " <IncidentGetList xmlns=\"https://www.monitoredsecurity.com/\">" 
          "<Severity></Severity>" 
          "<SourceOrganization></SourceOrganization>" 
          "<DestinationOrganization></DestinationOrganization>" 
          "<MaxIncidents></MaxIncidents>" 
          "<SourceIP></SourceIP>" 
          "<Category></Category>" 
          "<ExcludeCategory></ExcludeCategory>" 
          "<StartTimeStampGMT></StartTimeStampGMT>" 
          "<EndTimeStampGMT></EndTimeStampGMT>" 
          "<CustomerSeverity></CustomerSeverity>" 
          "</IncidentGetList>" 
          "</soap:Body>" 
          "</soap:Envelope>"; 


    NSURL *url = [NSURL URLWithString:@"https://api.monitoredsecurity.com/SWS/incidents.asmx"]; 
    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url]; 
    NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMessage length]]; 

    [theRequest addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
    [theRequest addValue: @"https://www.monitoredsecurity.com/IncidentGetList" forHTTPHeaderField:@"SOAPAction"]; 
    [theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"]; 
    [theRequest setHTTPMethod:@"POST"]; 
    [theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]]; 







    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 
    [connection start]; 

    if(connection) 
    { 
     webResponseData = [NSMutableData data] ; 

    } 
    else 
    { 
     NSLog(@"Connection is NULL"); 
    } 

     // Menu View 




} 

















//Implement the NSXmlParserDelegate methods 
-(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
    namespaceURI:(NSString *)namespaceURI qualifiedName: 
(NSString *)qName attributes:(NSDictionary *)attributeDict 
{ 
    element = elementName; 

    if ([element isEqualToString:@"SecurityIncidentSummary"]) { 

     IncidentGetList = [[NSMutableDictionary alloc] init]; 

     Severity = [[NSMutableString alloc] init]; 

    } //NSLog(@"current element: ", elementName); 
} 
- (void)parserDidStartDocument:(NSXMLParser *)parser{ 
    NSLog(@"File found and parsing started"); 

} 
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 
    if ([element isEqualToString:@"Severity"]) { 
     [Severity appendString:string]; 
    } 
} 
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName 
    namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 
    if ([elementName isEqualToString:@"SecurityIncidentSummary"]) { 

     [IncidentGetList setObject:Severity forKey:@"Severity"]; 

     [feeds addObject:[IncidentGetList copy]]; 
    } 
[self.datalist reloadData]; 
} 

- (void)parserDidEndDocument:(NSXMLParser *)parser { 

    NSLog(@"Final Feed : %@",feeds); 

} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 

// Row display. Implementers should *always* try to reuse cells by setting each cell's reuseIdentifier and querying for available reusable cells with dequeueReusableCellWithIdentifier: 
// Cell gets various attributes set automatically based on table (separators) and data source (accessory views, editing controls) 
    return [feeds count]; 

} 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 


static NSString *cellId = @"UITableViewCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId]; 
    if(cell == nil){ 
     cell= [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId]; 


    } 

    cell.textLabel.text= [[feeds objectAtIndex:indexPath.row]objectForKey:@"Severity"]; 
    //cell.textLabel.text= output[indexPath.row]; 
    return cell; 





} 

//UNTIL HERE 


// 
//- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
//// UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:<#@"reuseIdentifier"#> forIndexPath:indexPath]; 
// static NSString *cellIdentifier = @"cell"; 
//  
// UITableView *cell = [tableView dequeueReusableCellWithIdentifier:[cellIdentifier ]; 
//       
//       if(cell == nill){ 
//        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]autorelease]; 
//       
//       } 
// 
//       
////  
//// return cell; 
//} 


/* 
// Override to support conditional editing of the table view. 
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
    // Return NO if you do not want the specified item to be editable. 
    return YES; 
} 
*/ 

/* 
// Override to support editing the table view. 
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
     // Delete the row from the data source 
     [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
    } else if (editingStyle == UITableViewCellEditingStyleInsert) { 
     // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view 
    } 
} 
*/ 

/* 
// Override to support rearranging the table view. 
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { 
} 
*/ 

/* 
// Override to support conditional rearranging of the table view. 
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { 
    // Return NO if you do not want the item to be re-orderable. 
    return YES; 
} 
*/ 


#pragma mark - Table view delegate 

//In a xib-based application, navigation from a table can be handled in -tableView:didSelectRowAtIndexPath: 
//- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
// // Navigation logic may go here, for example: 
// // Create the next view controller. 
// // <#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:<#@"Nib name"#> bundle:nil]; 
//  
// // Pass the selected object to the new view controller. 
//  
// // Push the view controller. 
// //[self.navigationController pushViewController:detailViewController animated:YES]; 
// [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; 
// 
//} 


/* 
#pragma mark - Navigation 

// In a storyboard-based application, you will often want to do a little preparation before navigation 
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    // Get the new view controller using [segue destinationViewController]. 
    // Pass the selected object to the new view controller. 
} 
*/ 

@end 

Ниже мои данные журнала для NSXMLParser

2015-10-26 13:15:28.959 NewsFeeder[1327:634231] parsing result = 0 
+1

Пожалуйста, не публикуйте весь свой код. Ограничьте его до соответствующих частей, связанных с проблемой. И, пожалуйста, уточните свой вопрос с некоторыми деталями. Не просто отправляйте кучу кода и спрашивайте «объясните это для меня». Сначала определите проблему, используя некоторую отладку. – rmaddy

+0

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

ответ

0

Создание IBOutlet для UITableView и назвать его tableView или что-нибудь еще, а затем вызвать reloadData метод на него в вашем следующем методе:

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName 
    namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 
    if ([elementName isEqualToString:@"SecurityIncidentSummary"]) { 

     [IncidentGetList setObject:Severity forKey:@"Severity"]; 

     [feeds addObject:[IncidentGetList copy]]; 
    } 
    [tableView reloadData]; 
} 
+0

выше - это обновленный код, который я добавил в таблицу reload, но он все еще не может загрузить это из. пожалуйста помоги. – zac

+0

Можете ли вы поставить точку останова на '[tableView reloadData];' line и подтвердить, что массив фидов имеет значения. – manman

+0

Да, когда i NSLog в массиве фида есть значения внутри – zac

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