0

TBXMLのメソッドを使用しようとしています。

+ (id)tbxmlWithURL:(NSURL*)aURL success:(TBXMLSuccessBlock)successBlock failure:(TBXMLFailureBlock)failureBlock;

TBXMLSuccessBlockTBXML + HTML.hからですが、とに関する情報が見つかりませんTBXMLFailureBlock。公式チュートリアルでも、次のものしか見ることができません。

TBXML * tbxml = [[TBXML tbxmlWithURL:[NSURL URLWithString:@"http://www.w3schools.com/XML/note.xml"]] retain];

しかし、試してみると、Xcodeはそのようなクラスメソッドはないと言っています。ところで、私はARCを使用しています(したがって、私は書きませんretain)。

したがって、問題は、指定されたURLからTBXMLのメソッドを使用してXMLドキュメントをロードするにはどうすればよいですか?

4

1 に答える 1

1

TBXMLSuccessBlockおよびTBXMLFailureBlockは、指定されたURLからのXMLデータの取得が成功および失敗するための条件を実装するための効率的な方法として使用されます。Objective-Cブロックの詳細については、Appleのブロックプログラミングガイドを参照してください。

使用方法のサンプルコードが必要な場合は、次のようになります(最新バージョンのTBXMLを使用)。

TBXMLSuccessBlock s = ^(TBXML *tbxml) {
    NSLog(@"yay");
    // Do something with TBXML object "tbxml
    // ...
    // An example - print the name of an element
    TBXMLElement *e = [TBXML childElementNamed:@"head" parentElement:tbxml.rootXMLElement];
    NSString *a = [TBXML elementName:e];
    NSLog(@"%@",a);
};

TBXMLFailureBlock f = ^(TBXML *tbxml, NSError *error) {
    // Do something to recover from the failure here
    // ....
    NSLog(@"nay");
};

[TBXML newTBXMLWithURL:[NSURL URLWithString:@"http://www.google.co.nz"]
                              success: s
                              failure: f];

このコードを実行するとき、次のURLにアクセスできる場合は、TBXMLSuccessBlockが実行されます。Webサイトにアクセスできない場合は、TBXMLFailureBlockが実行されます。

ちなみに、使用しているライブラリが非ARCであり(ライブラリが静的または動的ライブラリではなくソースコードであると想定)、それをARC化されたソースに統合しようとしている場合は、Xcodeでこれを行うことができます。 xcodeprojファイル->ビルドフェーズ->ソースのコンパイルに移動し、ARCを使用しない.mファイルごとに、コンパイラ-fno-objc-arcにARCでコンパイルしないように指示するコンパイラフラグを入力します。

于 2012-05-19T11:15:28.777 に答える