2009-09-07 1 views
0

나는 SAX로 파싱하는 것에 대해 머리를 쓰려고 노력하고 있으며, iPhone Dev Center에서 발견 된 TopSongs 예제가 좋은 출발점이라고 생각했습니다. 나는 그것의 대부분을 얻습니다.하지만 노드 내의 속성과 값에 도달 할 때 어디서나 좋은 예를 찾을 수 없습니다. XML에는 coverArt에 대한 URL의 경로가 있습니다. XML 노드는 다음과 같습니다. 내가 시도한 것은하는 startElement이있다iPhone SDK를 사용하여 URL 경로에 특성 및 값을 사용하여 SAX를 구문 분석하는 방법은 무엇입니까?

<itms:coverArt height="60" width="60">http://a1.phobos.apple.com/us/r1000/026/Music/aa/aa/27/mzi.pbxnbfvw.60x60-50.jpg</itms:coverArt> 

...

((prefix != NULL && !strncmp((const char *)prefix, kName_Itms, kLength_Itms)) && 
     (!strncmp((const char *)localname, kName_CoverArt, kLength_Item) && 
     !strncmp((const char *)attributes, kAttributeName_CoverArt, kAttributeLength_CoverArt) && 
     !strncmp((const char *)attributes, kValueName_CoverArt, kValueLength_CoverArt) || 
     !strncmp((const char *)localname, kName_Artist, kLength_Artist) || 

이 같은 말에 바로 localName를 다시 그것을 따기.

if (!strncmp((const char *)localname, kName_CoverArt, kLength_CoverArt)) { importer.currentSong.coverArt = [NSURL URLWithString:importer.currentString]; 

추적은 - [Song setCoverArt :] : 인스턴스로 전송 된 인식 할 수없는 선택 자입니다.

답변

0

Song 클래스의 coverArt 속성을 합성하지 않은 것 같습니다 (@synthesize 키워드 사용). 그게 속성을 currentSong에 설정할 때 호출되는 -[Song setCoverArt:] 메서드를 만드는 것입니다.

+0

당신의 제안에 감사드립니다. 이것은 Song 클래스에서 @dynamic으로 설정된 다른 노드와 동일한 구조를 따릅니다. 하지만 데이터 모델에 올바르게 추가되지 않는다고 생각합니다. 이후 속성이없는 다른 노드를 추가하려고 시도했지만 동일한 오류 결과가 발생했습니다. – Jim

+0

오류를 던진 데이터 모델 파일에 새 속성을 추가하지 않았습니다. 이제 오류가 발생하지는 않지만 데이터를 가져 오지 못합니다. 그래서 위의 구조에서 뭔가 빠져 있어야합니다. – Jim

+0

노드에서 한 번의 호출로 데이터를 문자열로 연결할 수 있지만 문제는 다른 그림 크기에 대해 세 개의 노드가 있다는 것입니다. 그래서 나는 아직도 다른 사람들에게 어떻게 접근해야하는지 알 필요가있다. – Jim

관련 문제