0

NSObjectのサブクラスを作成しました。これは、NSXMLParserを初期化し、XMLを解析してから、サブクラスに渡すデリゲートのメソッドを呼び出します。

イニシャライザー:

- (id)initWithData:(NSData *)data interestingKeys:(NSSet *)interestingKeys_
      itemElm:(NSString *)itemElement_ delegate:(id <XDelegate>) delegate_ 
{
    if((self = [super init])) {
        self.delegate = delegate_;

        //create parser and start parsing
        NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
        parser.delegate = self;
        [parser parse];
        [parser release];
    }   
    return self;
}

デリゲートのメソッドを呼び出す:

- (void) parserDidEndDocument:(NSXMLParser *)parser 
{
    //calls parserDidFinishParsingData: in delegate class
    [self.delegate parserDidFinishParsingData:self.arrayOfDictionaries];
}

次に、解析されたデータ(に格納されているself.arrayOfDictionaries)を取得して、デリゲートクラスで使用できます。

問題は、次のログメッセージが表示されることです。

[Switching to thread 11523]
[Switching to thread 11523]

NSXMLParserアクティビティをNSObjectサブクラスに配置することで、自分自身に問題を引き起こしていますか?

DDXMLParser.h: https ://gist.github.com/762235 DDXMLParser.m: https :
//gist.github.com/762236 ユースケース:https ://gist.github.com/762237

乾杯

4

1 に答える 1

1

にどこから使用しますか?C関数に加えて、ルートクラス、または別のルートクラスのサブクラス。

独自のカスタムCocoaオブジェクトからCocoaオブジェクトを作成して使用することに問題はありません。

ログメッセージはデバッガーから送信されたように読み取られ、NSXMLParserの使用とは関係ありません。デバッガーはアプリケーションを中断しましたか?もしそうなら、それを見て、それが何を言っているかを見てください。

于 2011-01-02T11:20:17.370 に答える