Reputation: 425
Im using TBXML to parse some data to an NSMutableArray, my app breaks, and I dont understand why.
NSMutableArray *shareArray;
@implementation RecordParser
-(void)addToArray:(NSArray *)addArray {
shareArray=[[NSMutableArray alloc]init];
[shareArray addObject:addArray];
}
- (void)traverseXMLElement:(TBXMLElement *)element {
do {
if (element->firstChild)
[self traverseXMLElement:element->firstChild];
if ([[TBXML elementName:element] isEqualToString:@"element"]) {
TBXMLElement *id = [TBXML childElementNamed:@"id" parentElement:element];
TBXMLElement *path = [TBXML childElementNamed:@"path" parentElement:element];
TBXMLElement *share_type = [TBXML childElementNamed:@"share_type" parentElement:element];
TBXMLElement *token = [TBXML childElementNamed:@"token" parentElement:element];
[self addToArray:[NSArray arrayWithObjects:
[TBXML textForElement:id],
[TBXML textForElement:path],
[TBXML textForElement:share_type],
[TBXML textForElement:token], nil]];
}
} while ((element = element->nextSibling));
}
The Breakingpoint is at the [self addToArray:[NSArray arrayWithObjects:...
line.
Any help much appreciated!
EDIT:
One of my elements were returning nil, as suggested in comments below.
I got a new problem with only last value added to array, but that was because I shareArray=[[NSMutableArray alloc]init];
every time I added an object.
Upvotes: -1
Views: 93
Reputation: 356
Only the last object is stored in the array because you are initializing the sharedArray everytime the addToArray method is called. Declare sharedArray as an ivar or a property and do the initialization in viewDidLoad for example.
Upvotes: 1