2009-07-07 3 views
2

내 앱은 TabBarController로 구성되며 각 탭에는 UITableView가 있습니다.여러 개의 XML 파일을 하나 이상의 Object 클래스로 파싱 하시겠습니까?

시작시 내 서버의 XML 파일을 Object 클래스로 구문 분석 한 다음 첫 번째 tableview에 개체를 표시합니다.

제 질문은 두 번째 XML 파일을 구문 분석 할 때 무엇을합니까? 현재 이렇게 할 때 "XML-file-2"의 정보는 "XML-file-1"로 구문 분석 된 객체를 덮어 씁니다. 어떻게해야 제대로 할 수 있을까요? 각 XML 파일마다 다른 Object 클래스를 설정합니까, 아니면이 문제를 해결할 다른 클래스가 있습니까?

NSXMLParser를 사용하고 있습니다.

답변

1

I : 두 번째 실행이 appDelegate.products,에 추가하려는 경우 appDelegate.products 이미있는 개체가있는 경우 당신은있는 NSMutableArray의 addObject을 사용하여에 추가, 만약 그렇다면, 그것에 새로운 배열을 할당하지 않습니다를 참조한다 두 x0 XMLParser의 인스턴스를 읽고 자하는 각 XML 파일에 대해 하나씩 고려해야한다고 생각합니다. 서로 XML 개의 파일을 동시에 영향을주지 않고 읽을 수 있습니다. 또한 모듈 식입니다.

+0

그게 내 초기 생각이 문제를 해결하는 최선의 방법이었습니다. 각각의 XML에서 객체를 보유하기 위해 여러 객체 클래스를 설정 한 다음 각각에 XML을 사용하여 파일을 구문 분석합니다. – runmad

+0

그건 그렇고. 결국 XMLParser 수퍼 클래스를 만든 다음 XMLParser 하위 클래스의 XML 파일 별 코드를 나누었습니다. 훌륭하게 작동합니다. 또한 performSelectorInBackground를 수행하여 백그라운드에서 구문 분석하고 탭 사이에 끼어 들지 않는 것처럼 느껴지도록했습니다. – runmad

0

... 이미있는 데이터를 덮어 쓰지 마십시오 ...?

UITableView에서 내용을 표시하는 경우 NSArray가있는 곳에서 사용할 수 있습니다. 다행스럽게도, 이것을 올바르게 설정했다면, NSArray는 모델 객체를 포함하는데, 각 모델 객체는 UITableView의 한 행에 해당한다. 그러나 NSMutableArray를 사용하는 것이 좋습니다. 그런 다음 두 번째 XML 파일을 구문 분석하고 모델 객체를 빌드 할 때 NSMutableArray의 addObject : 메소드를 사용한 다음 UITableView에서 reloadData를 사용하면됩니다.

+0

여기 Parser.m 파일의 코드 조각입니다 : http://pastie.org/537227 환영 모든 의견 ... – runmad

+0

@Canada 데브 - 그것은 나에게 확인을 보인다. 작동하지 않습니까? NSXMLParser를 만들 때이 XMLParser 객체를 위임자로 설정하는 것을 기억하고 있습니까? –

+0

예, 모든 것이 AppDelegate에서 올바르게 설정되어야합니다. http://pastie.org/538494 – runmad

1

코드 단편 (http://pastie.org/537227)의 21 번째 줄에 제품 배열 (appDelegate.products)을 새로운 가변 배열로 설정합니다. 방법

0

notnoop 이미 언급했듯이 여러 NSXMLParser 인스턴스를 만드는 것이 가장 좋은 해결책이 될 것입니다.
Simple RSS Reader이라고하는 오픈 소스 iPhone RSS 리더는 지금 원하는 것을 보여주는 좋은 샘플이 될 것입니다.
Simple RSS Reader의 경우 그대로 RSSParser 클래스를 사용할 수 있습니다.

HTH는