Grundsätzlich möchte ich eine Klasse zum Parsen von XML-Dokument für meine iPhone-Apps schreiben.Ist es möglich, ein Array von 'Super Class'-Objekten in einer Klasse zu haben?
Hier ist meine Header-Datei für den Parser, die einem News-Feed
@interface NewsXML : NSObject<NSXMLParserDelegate>
{
@private
NSXMLParser *xmlParser;
NSString *currentElement;
NSMutableString *currentTitle;
NSMutableString *currentDate;
NSMutableString *currentDetail;
NSMutableString *currentImageURL;
NSMutableString *currentThumbnailURL;
NSMutableString *currentAlt;
}
@property (nonatomic, assign) NSObject<NewsXMLDelegate> *delegate;
@property (nonatomic, strong) NSMutableArray *newsItems;
@property (nonatomic, strong) NSURL *url;
- (void)fetch;
@end
Es gibt eine Reihe ‚Nachrichtenmeldungen“, die die abgerufenen Objekte aus dem XML nach der Methode hält ‚holen‘ genannt wird analysiert.
.Allerdings gibt es verschiedene Arten von XML-Dateien in meinem Programm, das ich analysieren möchte Jede Art von XML-Datei haben unterschiedliche Felder (zB: Titel, Datum, Detail, etc.).
ich schaffe andere Klasse (zB NewsItem, FooItem, AbcItem) zum Halten der Items f aus verschiedenen XML-Dateien.
Ich kann immer noch nicht herausfinden, wie diese XML-Parser-Klasse allgemeiner zu machen, so dass die NSMutableArray von Elementen verschiedene Arten von Elementen (NewsItem, FooItem ..) für jeden Fall enthalten kann. Jetzt muss ich verschiedene XML-Parser-Klassen für jede XML-Datei schreiben.
Also, wie kann das auf eine allgemeinere Weise getan werden?
EDIT
Es tut sie unklar zu sein .. Wenn die Parser jedes Element analysieren, es wird die zum Halten von Daten, und fügen Sie dann in das Array ein neues Objekt wie ‚NewsItem‘, ‚FooItem‘ erstellen. Allerdings sollte die Parser-Klasse die Existenz dieser Klassen nicht kennen (Da immer mehr Item-Klasse später hinzugefügt wird). Wie kann dann diese XML-Parser-Klasse die richtigen Objekte erstellen und sie dem Array richtig hinzufügen? Gibt es eine Möglichkeit, die Parser-Klasse mit der Klasse des Elements zu initialisieren?
Nicht ganz klar, was Sie fragen. Sie können nach (id) umwandeln und die Klassenmethode verwenden, um zu sehen, welche Klasse tatsächlich vorhanden ist, und mutableArrays können gemischte Typen enthalten. Hilft einer dieser Fakten? –
Entschuldigung für Unklarheiten. Wenn der Parser jedes Element analysiert, wird ein neues Objekt wie "NewsItem", "FooItem" zum Speichern der Daten erstellt und dann zum Array hinzugefügt. Allerdings sollte die Parser-Klasse die Existenz dieser Klassen nicht kennen (Da immer mehr Item-Klasse später hinzugefügt wird). Wie kann dann diese XML-Parser-Klasse die richtigen Objekte erstellen und sie dem Array richtig hinzufügen? Gibt es eine Möglichkeit, die Parser-Klasse mit der Klasse des Elements zu initialisieren? – cppcho