在方法头上通过
#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];
}
}
分享到:
相关推荐
POWERMILL宏
本资源“powermill最常用宏程序合集”是针对Powermill用户的一个极其宝贵的资料库,它包含了大量用于提高工作效率和精度的宏程序,这些宏程序通常用于自动化和定制化Powermill的功能。 宏程序是Powermill中的一个...
宏编程技术涉及宏变量、宏、宏参数、宏表达式、宏引用等多个概念。 1. **宏变量**: - **定义**:宏变量是存储文本值的容器,通过 `%LET` 语句创建。例如,`%let DSN=ResDat.class;` 定义了一个名为 `DSN` 的宏...
宏函数允许在宏语言中执行类似传统编程语言中的函数操作,而宏表达式则用于在宏语言中计算值。 从内容上来看,本文件涵盖了SAS宏编程的基础知识,包括宏处理器、宏变量、宏定义、参数传递、条件代码生成、高级技术...
2. 处理算术与逻辑表达式的宏函数:例如, `%EVAL()`用于计算宏表达式。 3. 处理文本的宏函数:例如, `%STR()`用于创建字符串常量,不受宏解析影响。 宏函数的使用扩展了宏语言的功能,使其能处理更复杂的任务,如...
- 宏表达式允许用户构建复杂的逻辑结构来控制宏的行为。 - **宏调用与执行流程**: - 宏调用通常通过 `%macro` 和 `%mend` 命令定义,通过 `%include` 或 `%call` 调用。 - 执行流程涉及到宏展开、参数传递和结果...
例如,在宏表达式中使用副作用强烈的操作(如自增或自减)可能导致问题。下面的示例演示了这种情况: ```c #define ADD(x, y) (x + y) int main() { int a = 5, b = 3; printf("Result: %d\n", ADD(a++, b++)); ...
3. **使用更高效的宏表达式**:宏表达式在Cognos 8.2 BI中被广泛用于动态生成复杂的提示逻辑。选择合适且高效的宏表达式可以有效减少处理时间。 ### 提示协调 #### 什么是提示协调? 提示协调是指Cognos 8.2 BI在...
- 在宏表达式中,可以使用 `Reports!test!Name` 访问报表控件值。 - VBA的自动运行宏命名为 `Autoexec`。 - 条件宏的条件项是逻辑表达式,可以使用条件表达式决定操作是否执行。 - 宏或宏组运行后才会产生宏...
要注意的是,宏展开时不考虑类型,因此可能在某些情况下导致意料之外的行为,比如在宏表达式中涉及到浮点数和整数的混合运算。 条件编译是预处理的另一重要特性,它允许我们根据特定的条件包含或排除某些代码段。这...
处理字符时,少不了UE(UltraEidt)的帮忙,只有在处理中才发现其功能之强悍。在此,共享个人积累,抛砖引玉,希望对大家有用。
3. VBA宏表达式:引用窗体控件的值,正确的宏表达式是Forms!窗体名!控件名。 4. 默认值设置:在Visual FoxPro中,只有数据库表可以设置字段的默认值。 5. 数据库系统结构:常见的运行与应用结构包括C/S(客户端/...
包括数据库管理、编程语言、网络协议、操作系统、软件调试、数据模型、计算机病毒特性、计算机硬件分类、窗口事件、内存类型、域名系统、程序设计语言、字符判断、电子表格、数据访问、条件设置、幻灯片操作以及宏...
在数据项表达式中使用的参数是必需的,而宏表达式中定义的参数可以是可选的或必需的,可以是单一值或多值。 IBM Cognos 8.2 中的提示调节如何影响性能?在执行提示调节时,IBM Cognos 8 需要检查查询,判断有哪些...
`defined()` 函数可以作为宏表达式的一部分,用于检查宏是否存在。例如,`#if defined(MACRO)` 返回真(非零)如果宏 `MACRO` 被定义,否则返回假(零)。这使得编写更复杂的条件编译指令成为可能,例如 `#if ...
3. Access宏表达式:在Access中,引用窗体控件的值,应该使用Forms!窗体名!控件名这样的宏表达式,所以B选项是正确的。 4. 二叉树遍历:二叉树的遍历有三种主要方式:前序遍历、中序遍历和后序遍历。根据后序遍历...
2. 宏表达式引用:在Access中,Forms!控件名!窗体名是正确的宏表达式结构,用于引用窗体控件的值。 3. TCP/IP协议:Internet的基础是TCP/IP协议,它定义了网络通信的标准。 4. 软件维护:软件维护是软件生命周期的...