0

我正在尝试使用 TBXML 的方法:

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

来自 TBXML+HTML.h 但我找不到任何关于TBXMLSuccessBlockand的信息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

TBXMLSuccessBlockTBXMLFailureBlock用作实现从给定 URL 成功和不成功检索 XML 数据的条件的有效方法。查看 Apple 的Blocks 编程指南,了解有关 Objective-C 块的更深入信息。

如果你只是想要一些关于如何使用它的示例代码,这里是(使用最新版本的 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。如果您无法访问该网站,TBXMLFailureBlock 将执行。

附带说明一下,如果您使用的库是非 ARC(假设该库是源代码而不是静态或动态库)并且您尝试将其集成到 ARC 化的源中,您可以在 Xcode 下通过转到您的 xcodeproj 文件 -> 构建阶段 -> 编译源并为每个不使用 ARC 的 .m 文件输入编译器标志,该标志-fno-objc-arc将告诉编译器不要使用 ARC 编译它。

于 2012-05-19T11:15:28.777 回答