首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSError可以在TBXML中重用吗?

NSError可以在TBXML中重用吗?
EN

Stack Overflow用户
提问于 2014-02-13 08:33:30
回答 1查看 64关注 0票数 0

嗨,我有一个解析器,测试可能的错误,如D_TBXML_ELEMENT_TEXT_IS_NIL。如果obj1为nil且obj2包含文本(NSError *),则error仍返回非0值。除了重新分配0值之外,还有什么方法可以清除之前的值吗?

我的代码是

代码语言:javascript
复制
- (void) parseOthers: (TBXMLElement *) element
{
    do {
        if (element -> firstChild)
        [self parser:element->firstChild];
        if ([[TBXML elementName:element] isEqualToString:@"myXML"]) {

        MyClass *myClass = [[MyClass alloc] init];
        NSError *error = nil;


        // TBXML element obj1 has nil text.
        myClass.myObject1 = [TBXML textForElement:[TBXML childElementNamed:@"obj1" parentElement:element] error:&error];
        if(error){
            NSLog(@"error in myObject1 > %@",[error localizedDescription]);
            // Causes the second object to return a non nil error if I don't use the code below. error = nil;
            error = nil;
        }


        // TBXML element obj2 has text but returns D_TBXML_ELEMENT_TEXT_IS_NIL if error = nil above isn't added.
        myClass.myObject2 = [TBXML textForElement:[TBXML childElementNamed:@"obj2" parentElement:element] error:&error];
        if(error){
            NSLog(@"error in myObject2 > %@",[error localizedDescription]);
            error = nil;
        }


        [myArray addObject:myClass];

        }
    } while ((element = element->nextSibling));
}
EN

回答 1

Stack Overflow用户

发布于 2014-02-13 08:48:12

除非出现错误(该方法返回nil),否则不要检查error

代码语言:javascript
复制
- (void) parseOthers: (TBXMLElement *) element
{
    do {
        if (element -> firstChild)
        [self parser:element->firstChild];
        if ([[TBXML elementName:element] isEqualToString:@"myXML"]) {

        MyClass *myClass = [[MyClass alloc] init];
        NSError *error = nil;


        // TBXML element obj1 has nil text.
        myClass.myObject1 = [TBXML textForElement:[TBXML childElementNamed:@"obj1" parentElement:element] error:&error];
        if(!myClass.myObject1){
            NSLog(@"error in myObject1 > %@",[error localizedDescription]);
            // Causes the second object to return a non nil error if I don't use the code below. error = nil;
            error = nil;
        }


        // TBXML element obj2 has text but returns D_TBXML_ELEMENT_TEXT_IS_NIL if error = nil above isn't added.
        myClass.myObject2 = [TBXML textForElement:[TBXML childElementNamed:@"obj2" parentElement:element] error:&error];
        if(!myClass.myObject2){
            NSLog(@"error in myObject2 > %@",[error localizedDescription]);
            error = nil;
        }


        [myArray addObject:myClass];

        }
    } while ((element = element->nextSibling));
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21742972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档