NSUS를 사용하여 웹 사이트에서 XML 데이터를 사용하는 iOS 앱인 http://undignified.podbean.com/feed에서 작업하고 있습니다. 거기에서 NSXMLParser를 사용하여 XML을 구문 분석하고 "인클로저"요소 내에서 "url"이라는 속성을 검색합니다. "url"과 일치하는 모든 속성은 _links 레이블이 붙은 변경 가능 배열에 추가됩니다. 문제는 "url"속성이 발견되어 배열에 추가 될 때마다 발생합니다. 이전 항목에 추가하고 기본적으로 배열에 하나의 큰 객체를 만드는 것입니다. 내가 배열을 NSLog 경우, _links은, 다음이 표시됩니다 내가 배열에 대한 addObject을 사용하고 있는데은 insertObject을 시도했지만, 어느 일한iOS : NSMutableArray에 추가 된 항목이 하나의 항목으로 표시됩니다.
(
(
"http://undignified.podbean.com/mf/feed/hm8a2d/UndignifiedBonusShow.mp3",
"http://undignified.podbean.com/mf/feed/cfdayc/UndignifiedShow03.mp3",
"http://undignified.podbean.com/mf/feed/wbbpjw/UndignifiedShow02Final.mp3",
"http://undignified.podbean.com/mf/feed/ih2x8r/UndignifiedShow01.mp3",
"http://undignified.podbean.com/mf/feed/t4x54d/UndignifiedShow00.mp3"
)
)
. 내 코드는 다음과 같습니다. 필자는 for 루프를 구현해야하는 배열에 객체를로드하는 다른 경우를 알고 있지만 파서 메서드가 전체 XML 문서를 반복하여 루프하는 것처럼 보이는지 여기에서 필요한지 확실하지 않습니다. 나는 그것이 내가 누락 된 작은 무엇인가라고 확신한다. 그리고 바른 방향의 찔레는 크게 인정 될 것이다.
UnDigParser.H - 구문 분석에 대한 파일을 들으
@interface UnDigParser : NSXMLParser <NSXMLParserDelegate> {
}
@property (retain) NSMutableArray *links;
@end
UnDigParser.M - 구문 분석에 대한 실행 파일 :
@implementation UnDigParser
NSMutableArray *_links;
@synthesize links = _links;
-(void)parserDidStartDocument:(NSXMLParser *)parser{
_links=[[NSMutableArray alloc] init];
}
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
if ([elementName isEqualToString:@"enclosure"]){
NSString *link = [attributeDict objectForKey:@"url"];
if (link){
[_links addObject:link];
}
}
NSLog(@"%@",_links);
}
-(BOOL)parse{
self.delegate = self;
return [super parse];
}
@end
감사, 저스틴. 의견에 감사드립니다. _links를 꺼내 self.links로 바꾸고 언급 한 다른 수정을 수행했습니다. 여기에 결과가 나오지 만 여전히 1 항목 또는 여러 항목으로 계속보고되고 있는지 확실하지 않습니다. – Fostenator
출력을 게시하는 데 문제가 있습니다 만 기본적으로는 열기 괄호 url, url, 닫는 괄호입니다. – Fostenator
디버깅 콘솔을 확인할 때 배열 "링크"에 1 개의 객체로 추가되었음을 확인했습니다. – Fostenator