Note that there are some explanatory texts on larger screens.

plurals
  1. POAll output Results are working but tableview is not load data from web service in iphone
    text
    copied!<p>I want load data to tableview from my web service in my iphone application. All outputs are working correctly but my table doesn't contain any data. It is empty.</p> <p>I did not find any mistake in the application. Why doesn't the tableview load data from the web service ?</p> <p>ScoreClass.h</p> <pre><code>@interface ScoreClass : NSObject { IBOutlet NSInteger *ScoreID; IBOutlet NSInteger *UserScore; IBOutlet NSInteger *GameID; IBOutlet NSString *MacID; IBOutlet NSString *NickName; IBOutlet Boolean *IsDeleted; IBOutlet NSDate *CreatedOn; IBOutlet NSDate *ModifiedOn; NSMutableArray *ScoreList; } @property(assign, readwrite) NSInteger *ScoreID; @property(assign, readwrite) NSInteger *UserScore; @property(assign, readwrite) NSInteger *GameID; @property(nonatomic, retain) NSString *MacID; @property(nonatomic, retain) NSString *NickName; @property(nonatomic, assign) Boolean *IsDeleted; @property(nonatomic, retain) NSDate *CreatedOn; @property(nonatomic, retain) NSDate *ModifiedOn; @property(retain, readwrite) NSMutableArray *ScoreList; @end </code></pre> <p>ScoreClass.m</p> <pre><code>#import "ScoreClass.h" @implementation ScoreClass @synthesize ScoreID, UserScore, GameID, MacID, NickName, IsDeleted,CreatedOn, ModifiedOn,ScoreList; -(id)init { [super init]; MacID = [NSString stringWithFormat:@""]; NickName= [NSString stringWithFormat:@""]; return self; } -(void) dealloc{ [MacID release]; [NickName release]; [super dealloc]; } @end </code></pre> <p>ScoreWebService.h</p> <pre><code>#import &lt;UIKit/UIKit.h&gt; #import "ScoreClass.h" @interface ScoreWebService : UIViewController { // Request NSString *address; NSString *xmlNamespace; NSString *operation; NSString *parameters; NSMutableString *inComeValue; // Connection BOOL recordResults; BOOL connectionFinished; // Xml Parsing NSMutableString *soapResults; NSMutableData *webData; NSXMLParser *xmlParser; ScoreClass *score; NSMutableArray *ScoreList; } @property(nonatomic, retain) NSString *address; @property(nonatomic, retain) NSString *xmlNamespace; @property(nonatomic, retain) NSString *operation; @property(nonatomic, retain) NSString *parameters; @property(nonatomic, retain) NSMutableString *inComeValue; @property(retain, readwrite) NSMutableArray *ScoreList; @property(nonatomic, retain) ScoreClass *score; @end </code></pre> <p>ScoreWebService.m</p> <pre><code>#import "ScoreWebService.h" @implementation ScoreWebService @synthesize operation, parameters, address, xmlNamespace, inComeValue, score; @synthesize ScoreList; -(id)init { [super init]; address = [NSString stringWithFormat:@""]; xmlNamespace = [NSString stringWithFormat:@""]; operation = [NSString stringWithFormat:@""]; parameters = [NSString stringWithFormat:@""]; inComeValue = [NSString stringWithFormat:@""]; score = [[ScoreClass alloc]init]; ScoreList = [[NSMutableArray alloc]init]; return self; } -(NSMutableArray *)ScoreTableWebService{ if (([address isEqualToString:@""]) || ([xmlNamespace isEqualToString:@""]) || ([operation isEqualToString:@""])) { //return; } recordResults = FALSE; NSString *soapMessage = [NSString stringWithFormat:@"&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n" "&lt;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/\"&gt;" "&lt;soap:Body&gt;" "&lt;BayiSatisTakipTablo6Oku xmlns=\"http://trigonservis.com/\"&gt;" "&lt;IstasyonKodu&gt;34005&lt;/IstasyonKodu&gt;" "&lt;Gun1&gt;02.01.2012&lt;/Gun1&gt;" "&lt;/BayiSatisTakipTablo6Oku&gt;" "&lt;/soap:Body&gt;" "&lt;/soap:Envelope&gt;" ]; NSLog(@"Request SOAP = \n%@\n\n", soapMessage); NSURL *url = [NSURL URLWithString:address]; NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url]; [theRequest addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; [theRequest addValue: @"http://trigonservis.com/BayiSatisTakipTablo6Oku" forHTTPHeaderField:@"SOAPAction"];   [theRequest addValue: soapMessage forHTTPHeaderField:@"Content-Length"]; [theRequest setHTTPMethod:@"POST"]; [theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]]; //Connexion NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; if( theConnection ) { webData = [[NSMutableData data] retain]; } else { NSLog(@"there is a problem to connect webservices"); } while (!connectionFinished) { [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]; } return ScoreList; } -(void)connectionDidFinishLoading:(NSURLConnection *)connection { NSString *theXML = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding]; #if(TARGET_IPHONE_SIMULATOR) NSLog(@"Reponse SOAP = \n%@\n\n", theXML); #endif [theXML release]; // Appel futur du parser if(xmlParser) [xmlParser release]; // Allocation du NSXMLParser xmlParser = [[NSXMLParser alloc] initWithData: webData]; // Désigne l'instance de la classe courante comme étant le delegate du NSXMLParser [xmlParser setDelegate: self]; [xmlParser setShouldResolveExternalEntities: YES]; [xmlParser parse]; [connection release]; [webData release]; connectionFinished = TRUE; } /************************************************************************************ ** Connection */ -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { [webData setLength: 0]; } -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { [webData appendData:data]; } -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { [connection release]; [webData release]; } /************************************************************************************ ** XML Parsing */ -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *)qName attributes: (NSDictionary *)attributeDict { NSLog(@"elementName = %@ \n", elementName); if( [elementName isEqualToString:@"DagiticiSatis"]) { if(!soapResults) soapResults = [[NSMutableString alloc] init]; recordResults = TRUE; } else if( [elementName isEqualToString:@"IstasyonAdi"]) { if(!soapResults) soapResults = [[NSMutableString alloc] init]; recordResults = TRUE; } return; } -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { if( recordResults ){ [soapResults appendString: string]; } } -(NSMutableArray *)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { if( [elementName isEqualToString:@"DagiticiSatis"]) { #if(TARGET_IPHONE_SIMULATOR) NSLog(@"ScoreID = %@ \n", soapResults); #endif score = [[ScoreClass alloc]init]; score.MacID = soapResults; [soapResults release]; soapResults = nil; } else if( [elementName isEqualToString:@"IstasyonAdi"]){ #if(TARGET_IPHONE_SIMULATOR) NSLog(@"IstasyonAdi = %@ \n", soapResults); #endif score.NickName = soapResults; [soapResults release]; soapResults = nil; } return ScoreList; } @end </code></pre> <p>GridTableViewCell.h</p> <pre><code>#import &lt;UIKit/UIKit.h&gt; @interface GridTableViewCell : UITableViewCell { UIColor *lineColor; BOOL topCell; UILabel *cell1; UILabel *cell2; UILabel *cell3; } @property (nonatomic, retain) UIColor* lineColor; @property (nonatomic) BOOL topCell; @property (readonly) UILabel* cell1; @property (readonly) UILabel* cell2; @property (readonly) UILabel* cell3; @end </code></pre> <p>GridTableViewCell.m</p> <pre><code>#import "GridTableViewCell.h" #define cell1Width 80 #define cell2Width 80 #define cellHeight 44 @implementation GridTableViewCell @synthesize lineColor, topCell, cell1, cell2, cell3; - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { topCell = NO; // Add labels for the three cells cell1 = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, cell1Width, cellHeight)]; cell1.textAlignment = UITextAlignmentCenter; cell1.backgroundColor = [UIColor clearColor]; // Important to set or lines will not appear [self addSubview:cell1]; cell2 = [[UILabel alloc] initWithFrame:CGRectMake(cell1Width, 0, cell2Width, cellHeight)]; cell2.textAlignment = UITextAlignmentCenter; cell2.backgroundColor = [UIColor clearColor]; // Important to set or lines will not appear [self addSubview:cell2]; cell3 = [[UILabel alloc] initWithFrame:CGRectMake(cell1Width+cell2Width, 0, 320-(cell1Width+cell2Width), cellHeight)]; // Note - hardcoded 320 is not ideal; this can be done better cell3.textAlignment = UITextAlignmentCenter; cell3.backgroundColor = [UIColor clearColor]; // Important to set or lines will not appear [self addSubview:cell3]; } return self; } - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; // Configure the view for the selected state } - (void)dealloc { [cell1 release]; [cell2 release]; [cell3 release]; [super dealloc]; } - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetStrokeColorWithColor(context, lineColor.CGColor); // CGContextSetLineWidth: The default line width is 1 unit. When stroked, the line straddles the path, with half of the total width on either side. // Therefore, a 1 pixel vertical line will not draw crisply unless it is offest by 0.5. This problem does not seem to affect horizontal lines. CGContextSetLineWidth(context, 1.0); // Add the vertical lines CGContextMoveToPoint(context, cell1Width+0.5, 0); CGContextAddLineToPoint(context, cell1Width+0.5, rect.size.height); CGContextMoveToPoint(context, cell1Width+cell2Width+0.5, 0); CGContextAddLineToPoint(context, cell1Width+cell2Width+0.5, rect.size.height); // Add bottom line CGContextMoveToPoint(context, 0, rect.size.height); CGContextAddLineToPoint(context, rect.size.width, rect.size.height-0.5); // If this is the topmost cell in the table, draw the line on top if (topCell) { CGContextMoveToPoint(context, 0, 0); CGContextAddLineToPoint(context, rect.size.width, 0); } // Draw the lines CGContextStrokePath(context); } - (void)setTopCell:(BOOL)newTopCell { topCell = newTopCell; [self setNeedsDisplay]; } @end </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload