Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

loon3y

macrumors 65816
Original poster
Oct 21, 2011
1,235
126
Im making a split view product search app for the iPad, that gets the data from a web service. but I'm having trouble getting the data to show up in my master tableview controller (the small table view on the left)


is my parsing done correctly?


Code:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSString *responseString = [[NSString alloc] initWithData:self.responseData encoding:NSUTF8StringEncoding];
    
    NSString * newStr = [NSString stringWithUTF8String:[self.responseData bytes]];
    
    [self parseXML]; 
}



- (void) parseXML 
{
    NSLog (@"parseXML");
   
    NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:self.responseData];
    
    [xmlParser setDelegate:self];
    
    
    myMasterList = [[MasterList alloc] init];
    
    if (![xmlParser parse])
    {
        NSLog (@"An error occurred in the parsing");    
    }
}



- (void)parserDidStartDocument:(NSXMLParser *)parser 
{
    NSLog (@"parserDidStartDocument");
    inItemElement = NO;
}


- (void)parserDidEndDocument:(NSXMLParser *)parser 
{
    NSLog (@"parserDidEndDocument");
}


// Called when the parser encounters a start element
- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict 
{
    if ([elementName isEqualToString:@"str_smartsearch"]) 
    {
        inItemElement = YES;
    }
    capturedCharacters = [[NSMutableString alloc] initWithCapacity:50];
    capturedCharacters = [[NSMutableString alloc] initWithCapacity:250];
}


- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName 
  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{
    
    
    if ([elementName isEqualToString:@"description"])
    {
        myMasterList.masterDecript = capturedCharacters;
        NSLog(@" decription:%@", capturedCharacters);
        }
    if ([elementName isEqualToString:@"onhand"]) 
    {
        myMasterList.masterOnHand = capturedCharacters;
        
    }
    if ([elementName isEqualToString:@"price"])
    {
        myMasterList.masterPrice = capturedCharacters;
    }
    if ([elementName isEqualToString:@"itemno"])
    {
        myMasterList.masterItem = capturedCharacters;
        [masterArray addObject:myMasterList];
        myMasterList = nil;
   
        
    }
    
    capturedCharacters = nil;   
    
    if ([elementName isEqualToString:@"str_smartsearch"]) 
    {
     
       inItemElement = NO;
    }
    

}


- (void)parser:(NSXMLParser *)parser foundCharacters:(NSMutableString *)string 
{
    if (capturedCharacters != nil) 
    {
        [capturedCharacters appendString:string];
   
    }
    else 
    {
        [capturedCharacters isEqual:string];
    }
    
}


I've token out the NS logs and such, to make it easier to read. i've been stuck on this for while.


all i need is for it to show up on my master tableview and iill basically be done with this app.
 

Sykte

macrumors regular
Aug 26, 2010
223
0
Code:
if (capturedCharacters != nil) 
    {
        [capturedCharacters appendString:string];
   
    }
    else 
    {
        [B][capturedCharacters isEqual:string];[/B]
    }

What's going on with the bold section? I believe you want to instantiate a new capturedCharacters.

Hope this helps.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.