0

メソッドを使用して xml データをロードしようとしていますnewTBXMLWithURLが、成功ブロックが xml を返したら、コントローラーがレコードを受信できるように委任を使用してディスパッチしようとしてNSMutableArrayいますが、何か間違ったことをしているに違いなく、コンソールに「PROGRAM RECEIVED EXC_BAD_ACCESS」というエラーが表示されます「どこで間違えたのかわからない。以下にコードを添付

#import "XmlParser.h"
#import "TBXML+HTTP.h"
#import "NewsObject.h"

@implementation XmlParser
@synthesize  delegate = _delegate;

- (void)GetNewsList
{

    TBXMLSuccessBlock s = ^(TBXML *tbxml) {
        NSMutableArray *arrayOfNews;

        TBXMLElement *root = tbxml.rootXMLElement;

        TBXMLElement *newsListElement = [TBXML childElementNamed:@"NewsList" parentElement:root];

        TBXMLElement *newsElement = [TBXML childElementNamed:@"News" parentElement:newsListElement];

        while(newsElement !=nil){

            NewsObject *news = [[NewsObject alloc]init];

            news.headLine = [TBXML textForElement: newsElement ->firstChild];
            news.description = [TBXML textForElement:newsElement ->firstChild->nextSibling];
            news.imageUrl = [TBXML textForElement:newsElement->firstChild->nextSibling->nextSibling];

            if(arrayOfNews==nil)
                arrayOfNews = [NSMutableArray arrayWithObject:news];
            else
                [arrayOfNews addObject:news];

            newsElement = newsElement ->nextSibling;
        }

        [self.delegate XmlParser:self feedReady:arrayOfNews];
    };

    TBXMLFailureBlock f = ^(TBXML *tbxml, NSError *error) {
        NSLog(@"nay");
    };


    [TBXML newTBXMLWithURL:[NSURL URLWithString:@"url"]
                   success: s
                   failure: f];

}
@end

入力サンプル:

<xmlData>
<NewsList>
<News newsId="1" providerId="1" articleId="95020" sportId="6" sportName="RBL">
<Headline>Matai signs on with Manly</Headline>
<Description>
Manly has retained another one of its premiership stars with Steve Matai committing to the Sea Eagles until the end of the 2015 season.
</Description>
<Image>
http:google.com/All.png
</Image>
</News>
<News newsId="2" providerId="1" articleId="95019" sportId="7" sportName="RBU">
<Headline>Reds lose Lucas for Brumbies clash</Headline>
<Description>
Queensland has lost key utility back Ben Lucas to injury on the eve of Saturday night's vital match with the Brumbies at Canberra Stadium.
</Description>
<Image>
http:google.com/All.png
</Image>
</News>
</NewsList>
<xmlData>
4

1 に答える 1

0

実際のエラー メッセージをお知らせいただきありがとうございます。そのエラーまたは警告の理由は 1 つではありません。

また、ARC を使用していますか、それとも自動リリースするのを忘れていましたか? どの Xcode バージョンとコンパイラを使用していますか? これらすべての詳細が重要です。

selfブロック内を回避してこれを修正できると思います:

__block id _self = self;
TBXMLSuccessBlock s = ^(TBXML *tbxml) {
    /* use _self inside the block, not self */
};

https://stackoverflow.com/a/7854315/143097を参照してください。

以前の回答:

存在しないメソッドを呼び出しているようです: newTBXMLWithURL:success:failure:. 少なくとも私のバージョンの TBXML では、次のように呼ばれていますtbxmlWithURL:success:failure:

エラーメッセージのどこかにヒントがあるはずですよね?

于 2012-05-27T10:26:31.373 に答える