Ich arbeite an einer iOS-App, die NSURL verwendet, um XML-Daten von einer Website zu verwenden: http://undignified.podbean.com/feed. Von dort aus analysiere ich das XML mit NSXMLParser und suche nach einem Attribut namens "url" innerhalb des "enclosure" -Elements. Alle Attribute, die "url" entsprechen, werden dann zu einem änderbaren Array mit der Bezeichnung _links hinzugefügt. Das Problem ist jedes Mal, wenn ein "url" -Attribut gefunden und dem Array hinzugefügt wird, fügt es es dem vorherigen Eintrag hinzu und erstellt im Wesentlichen ein großes Objekt im Array. Wenn ich das Array NSLog aus, _links wird folgendes angezeigt:iOS: Elemente, die zu NSMutableArray hinzugefügt wurden, werden als ein Element angezeigt
(
(
"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"
)
)
I addObject für das Array bin mit und haben insert versucht, aber weder gearbeitet haben. Mein Code ist unten aufgeführt. Ich weiß in anderen Instanzen des Ladens von Objekten in ein Array, das ich eine for-Schleife implementieren musste, bin aber nicht sicher, ob es hier notwendig ist, da die Parser-Methode scheint, das gesamte XML-Dokument selbst zu durchlaufen. Ich bin mir sicher, dass es etwas Kleines ist, das ich vermisse und ein Anstupsen in die richtige Richtung würde sehr geschätzt werden.
UnDigParser.H - Hear-Datei für die Analyse:
@interface UnDigParser : NSXMLParser <NSXMLParserDelegate> {
}
@property (retain) NSMutableArray *links;
@end
UnDigParser.M - Implementierungsdatei für die Analyse:
@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
Danke, Justin. Ich schätze das Feedback. Ich nahm die _links heraus und ersetzte sie durch self.links und führte die anderen Änderungen durch, die Sie erwähnten. Hier ist die Ausgabe jetzt, aber ich bin unsicher, ob es immer noch als 1 Element oder mehrere Einträge meldet: – Fostenator
Ich habe Probleme beim Posten der Ausgabe, aber im Grunde ist es öffnende Klammer URL, URL, enge Klammer. – Fostenator
Ich habe bestätigt, dass es immer noch als 1 Objekt im Array "Links" hinzugefügt wird, wenn Sie die Debugging-Konsole überprüfen. – Fostenator