2014-11-14 3 views
-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:... 라인에 있습니다.

많은 도움을 주셨습니다.

편집 : 아래의 의견에 제안 내 요소의

하나는, 전무를 반환했다.

배열에 마지막 값만 추가하면 새로운 문제가 발생하지만 그 이유는 객체를 추가 할 때마다 내가 shareArray=[[NSMutableArray alloc]init];이기 때문입니다.

+0

검사 텍스트의 어쩌면 하나의 요소에 대해 반환 된 경우는 – Antenehs

+0

전무 충돌 및 Antenehs @ – l0gg3r

+0

이 요소를 먼저 확인 맞다 – dheeru

답변

1

addToArray 메서드가 호출 될 때마다 sharedArray를 초기화하기 때문에 마지막 객체 만 배열에 저장됩니다. sharedArray를 ivar 또는 속성으로 선언하고 예를 들어 viewDidLoad에서 초기화를 수행합니다.

+0

아, 물론 .. 지금 일합니다. 고맙습니다! – ladrua

관련 문제