-1

我使用 TBXML 将一些数据解析为 NSMutableArray,我的应用程序中断,我不明白为什么。

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));

}

断点就在这[self addToArray:[NSArray arrayWithObjects:...条线上。

非常感谢任何帮助!

编辑:

正如下面评论中所建议的,我的一个元素返回 nil。

我遇到了一个新问题,只有最后一个值添加到数组中,但那是因为我shareArray=[[NSMutableArray alloc]init];每次添加一个对象。

4

1 回答 1

1

只有最后一个对象存储在数组中,因为每次调用 addToArray 方法时都会初始化 sharedArray。例如,将 sharedArray 声明为 ivar 或属性并在 viewDidLoad 中进行初始化。

于 2014-11-14T12:35:00.193 回答