• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Creating table rows from XML
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Creating table rows from XML


  • Subject: Creating table rows from XML
  • From: Phil Dokas <email@hidden>
  • Date: Mon, 20 Apr 2009 02:30:11 -0400

Hello all, I'm writing my first iPhone application and I've run into a problem I can't seem to get a grasp on.

In short I want to parse an XML file and display a UITableView with data from a set of XML elements. I've got all the code written for this but whenever I try to access my array of data inside of - tableView:cellForRowAtIndexPath: I crash without an error message in console.



Here are the two relevant classes:

@interface PDPagesViewController : UITableViewController {
  NSData* received_data;
  NSMutableArray* pages;
}
- (void)beginParsing;
@end

@interface PDPage : NSObject {
  NSNumber* page_id;
  NSString* title;
}
@property(nonatomic,retain) NSNumber* page_id;
@property(nonatomic,copy) NSString* title;
-(id)init;
-(id)initWithID:(int)in_id andTitle:(NSString*)in_title;
@end



I init my PDPagesViewController as follows:

- (id)init {
  if (self = [super init]) {
    pages = [[NSMutableArray alloc] init];
    [self beginParsing];
  }
  return self;
}

I construct my NSURLRequest and setup my parser inside of beginParsing. Here is the delegate method which then builds my array:

- (void)parser:(NSXMLParser *)parser
didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict
{
// Handle <page> elements
if ([elementName isEqualToString:@"page"]) {
NSString *titleAttr = [attributeDict objectForKey:@"title"];
NSString *idAttr = [attributeDict objectForKey:@"id"];
if (titleAttr && idAttr) {
PDPage* newPage = [[PDPage alloc] initWithID:[idAttr intValue] andTitle:titleAttr];
[pages addObject:newPage];
[newPage release];
}
return;
}
}


Insofar as I can tell, everything is ok so far. The problem occurs in this table delegate method (again, part of PDPagesViewController), with crashing lines and received output listed in comments:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";


UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}

// Set up the cell...
NSLog(@"Setting up table cell %d", [indexPath row]); // "Setting up table cell: 8"
NSLog(@"retain count: %d", [pages retainCount]); // "retain count: 1"
NSLog(@"array count: %d", [pages count]); // "array count: 16"
NSLog(@"page retain count: %d", [(PDPage*)[pages objectAtIndex: [indexPath row]] retainCount]); // "page retain count: 1"
NSLog(@"title: %@", [(PDPage*)[pages objectAtIndex:[indexPath row]] title]); // This line causes a crash
NSLog(@"pages array right now: %@", pages); // This line causes a crash
cell.text = [[pages objectAtIndex:[indexPath row]] title]; // This line causes a crash
return cell;
}



It seems to me that whenever I try to interact with my NSMutableArray as such in this method it crashes, but when I use only its NSObject methods it's fine. And yet, it and its contents have the right retain count. I feel like I must be missing something basic, so any insight would be much appreciated. Thank you!


--
Phil Dokas -//- email@hidden

_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Follow-Ups:
    • Re: Creating table rows from XML
      • From: Nathan Day <email@hidden>
    • Re: Creating table rows from XML
      • From: Nathan Kinsinger <email@hidden>
  • Prev by Date: iPhoto and Scripting Bridge
  • Next by Date: Re: printer user friendly paper name to internal paper name?
  • Previous by thread: iPhoto and Scripting Bridge
  • Next by thread: Re: Creating table rows from XML
  • Index(es):
    • Date
    • Thread