Разбор XML вызывает ошибку - PullRequest
0 голосов
/ 08 ноября 2010

Извините за мой плохой английский.Я из Германии, и у меня есть некоторые проблемы с анализом моего XML-файла.Я использую последнюю версию iOS SDK, включая Xcode.

При анализе моего xml-файла возникает общеизвестная ошибка, которая называется «Запрос фрагментов члена в чем-то, что не является структурой или объединением»

Кажется, я что-то забыл, инициализируя мой класс Delgegate?Было бы здорово, если бы кто-то мог мне помочь.Это единственная ошибка, которую я получаю ... narrf ..

Вот код, относящийся к этой проблеме:

Мой файл XMLParser .h

#import <UIKit/UIKit.h>

@class XMLAppDelegate, Slice;

@interface XMLParser : NSObject <NSXMLParserDelegate>{

    NSMutableString *currentElementValue;

    XMLAppDelegate *appDelegate;
    Slice *aSlice; 
}

- (XMLParser *) initXMLParser;

@end

А вот некоторые части .m файла, который показывает ошибку:

#import "XMLParser.h"
#import "XMLAppDelegate.h"
#import "Slice.h"

@implementation XMLParser

- (XMLParser *) initXMLParser { 
    [super init];
    appDelegate = (XMLAppDelegate *)[[UIApplication sharedApplication] delegate];
    return self;
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName 
    attributes:(NSDictionary *)attributeDict {

    if([elementName isEqualToString:@"Channel"]) {
        //Initialize the array.
        appDelegate.slices = [[NSMutableArray alloc] init];
    }
    else if([elementName isEqualToString:@"Slice"]) {

        //Initialize the slice.
        aSlice = [[Slice alloc] init];

        //Extract the attribute here.
        aSlice.sliceID = [[attributeDict objectForKey:@"id"] integerValue];

        NSLog(@"Reading id value :%i", aSlice.sliceID);
    }

    NSLog(@"Processing Element: %@", elementName);
}

Ошибка появляется после того, как я пытаюсь использовать массив слайсов моего делегата.

Было бы здорово, если кто-тознает, что делать, эта маленькая вещь делает меня больным.^^

1 Ответ

0 голосов
/ 08 ноября 2010

Анализ файла XML ничего не сделал, потому что вы не дошли до этого. Ваша программа будет анализировать XML только при запуске; ваш код еще не запущен, потому что он не компилируется.

Ошибка находится в процессе компиляции (именно поэтому вы видите ее в результатах сборки) и является синтаксической ошибкой: вы пытались использовать имя, которое компилятор не распознает как допустимое для места, где вы его использовали .

В частности:

        appDelegate.slices = [[NSMutableArray alloc] init];

Компилятор не знает, что appDelegate имеет свойство slices; как таковой, он возвращается к своим корням C и жалуется, что вы пытаетесь получить доступ к структуре чего-то, что не является структурой. Вы показываете в своем коде, что импортировали заголовок для класса AppDelegate, поэтому проблема должна заключаться в том, что вы не объявили свойство slices в @interface.

этого класса.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...