trying to push array to an array in objective c

123 Views Asked by At

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.

1

There are 1 best solutions below

0
Antenehs On BEST ANSWER

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.