宏表达式

 

 

在方法头上通过

 

#define ELTYPE(typeName) (NSOrderedSame == [elementName caseInsensitiveCompare:@#typeName])

的写法,在方法里面的实用

 

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName

                                        namespaceURI:(NSString *)namespaceURI

                                       qualifiedName:(NSString *)qName

                                          attributes:(NSDictionary *)attributeDict

{

    NSString *ident = [attributeDict objectForKey:@"id"];

 

    KMLStyle *style = [_placemark style] ? [_placemark style] : _style;

 

    // Style and sub-elements

    if (ELTYPE(Style)) {

        if (_placemark) {

            [_placemark beginStyleWithIdentifier:ident];

        } else if (ident != nil) {

            _style = [[KMLStyle alloc] initWithIdentifier:ident];

        }

    } else if (ELTYPE(PolyStyle)) {

        [style beginPolyStyle];

    } else if (ELTYPE(LineStyle)) {

        [style beginLineStyle];

    } else if (ELTYPE(color)) {

        [style beginColor];

    } else if (ELTYPE(width)) {

        [style beginWidth];

    } else if (ELTYPE(fill)) {

        [style beginFill];

    } else if (ELTYPE(outline)) {

        [style beginOutline];

    }

    // Placemark and sub-elements

    else if (ELTYPE(Placemark)) {

        _placemark = [[KMLPlacemark alloc] initWithIdentifier:ident];

    } else if (ELTYPE(Name)) {

        [_placemark beginName];

    } else if (ELTYPE(Description)) {

        [_placemark beginDescription];

    } else if (ELTYPE(styleUrl)) {

        [_placemark beginStyleUrl];

    } else if (ELTYPE(Polygon) || ELTYPE(Point) || ELTYPE(LineString)) {

        [_placemark beginGeometryOfType:elementName withIdentifier:ident];

    }

    // Geometry sub-elements

    else if (ELTYPE(coordinates)) {

        [_placemark.geometry beginCoordinates];

    } 

    // Polygon sub-elements

    else if (ELTYPE(outerBoundaryIs)) {

        [_placemark.polygon beginOuterBoundary];

    } else if (ELTYPE(innerBoundaryIs)) {

        [_placemark.polygon beginInnerBoundary];

    } else if (ELTYPE(LinearRing)) {

        [_placemark.polygon beginLinearRing];

    }

 

}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值