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 -//- p...@jetless.org
___
Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to arch...@mail-archive.com