2015-10-26 43 views
-2

下面是我的.m文件。我在.h文件中聲明瞭NSMutableArray,但它仍然無法將我的數組從xmlparser顯示到UITableView。請引導我通過下面的代碼。最有可能的是我的tableview代碼,因爲我可以從feed數組中註銷數據。我也重新加載表視圖控制器。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

代碼是好的,但我不知道哪個部分我錯過了,導致我的tableview顯示結果,因此我粘貼我的整個代碼 – zac

回答

0

UITableView創建一個IBOutlet並將其命名爲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

以上是更新的代碼,我添加了我的tableview重新加載,但它仍然無法加載出來。請幫忙。 – zac

+0

你可以在'[tableView reloadData]'行放置一個斷點,並確認feeds數組有值。 – manman

+0

是的,當我NSLog飼料數組有 – zac

相關問題