菜鸟教程小白 发表于 2022-12-12 20:57:11

ios - NSXMLParser 的错误处理


                                            <p><p>我正在从我的旧文件构建一个新项目。我忘了复制我的配置文件,当然它不起作用。我使用 <code>NSXMLparser</code> 读取配置文件,但没有正确报告错误。</p>

<p>使用 <code>NSXMLParser</code> 检测文件访问错误的正确方法是什么?</p>

<p>我正在使用错误的 URL 初始化 <code>NSXMLParser</code>。初始化器返回一个有效的对象。</p>

<p>当我调用 <code></code> 时,它返回 <code>FALSE</code> 表示错误。</p>

<p>但是 <code></code> 方法返回 <code>null</code>。</p>

<p>我没有看到检测文件访问错误的良好编码序列。</p>

<p>根据要求,使用的代码:</p>

<pre><code>- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
{// Does not print with missing file
    NSLog(@&#34;Location File Error %@&#34;, parseError) ;
}


-(id) initWithURL:(NSURL *) url // For my class
{
    self = ;
    if (self)
    {
       xmlParser = [ initWithContentsOfURL:url] ;
       xmlParser.delegate = self ;
       if (!)
       {
            NSError *error = ;

            NSLog (@&#34;Error parsing &#39;%@&#39;\n%@&#34;, url, error) ; // Error is null
       }
    }
    return self ;
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>为什么不使用 <code>NSXMLParserDelegate</code> 上的方法来识别您的错误? (除非您想验证您传递给解析器的 URL <em>先验</em>。)</p>

<p>一个简短且功能不完整的示例:</p>

<pre><code>#import &lt;Foundation/Foundation.h&gt;

@interface Foo:NSObject &lt;NSXMLParserDelegate&gt;
@property (nonatomic, strong) NSXMLParser *parser;
@end

@implementation Foo

- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
    NSLog(@&#34;Error - %@&#34;,parseError.userInfo);
}

@end

int main(int argc, char *argv[]) {
    @autoreleasepool {
      Foo *f = ;
      NSURL *u = ;
      f.parser = [ initWithContentsOfURL:u];
      f.parser.delegate = f;
      [ parse];
    }
}
</code></pre>

<p>将以下内容打印到控制台:</p>

<blockquote>
<p>2014-03-28 05:33:11.082 Untitled Error - {
      NSXMLParserErrorColumn = 36;
      NSXMLParserErrorLineNumber = 95;
      NSXMLParserErrorMessage = &#34;StartTag: invalid element name\n&#34;; }</p>
</blockquote></p>
                                   
                                                <p style="font-size: 20px;">关于ios - NSXMLParser 的错误处理,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/22705821/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/22705821/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - NSXMLParser 的错误处理