0

在解析 xml 文档时,我使用了多个 if-else 来明智地解析数据标签。我也可以对 for 循环做同样的事情。但是我对使用哪个感到困惑,因为性能会提高。哪个会更快?

//Parsing with If-Else

if(element.name isEqualToString:@"String1") {
object.id = [element.value intValue];
}
if(element.name isEqualToString:@"String2") {
object.name = element.value;
}
if(element.name isEqualToString:@"String3") {
object.address = element.value;
}
.....

// OR Parsing with for loop

for(NSString * str in NSArray) {
[dict setObject:element.value forKey:element.name];// This will add parsing element in dict
}

//Use the dictionary to show data later
4

2 回答 2

1

字典查找可以更快,因为它使用密钥哈希。也就是说,您应该始终在尝试优化代码之前对其进行分析。

就个人而言,我喜欢字典方法,因为它是不那么平凡的代码。此外,您可以轻松地将元素名称映射到感兴趣的字典键:

NSDictionary *keySubstitutions = { @"String1" : @"id", @"String2" : @"name", ... };

for(NSXMLElement * element in elements) {
    id key = keySubstitutions[element.name];
    if (key)
        dict[key] = element.value;
    // else the element name is not supported
}
于 2012-09-10T05:08:46.297 回答
0

这实际上既是关于代码结构的问题,也是关于表示的问题。具有命名属性的对象强烈建议使用 if-elseif 结构,而字典强烈建议使用循环。

XML(以及它的所有亲属)与名称-值表示完美配对。标签是名称,标签主体是值。

字典是要走的路,因此循环也是如此。这是 NS 解析器以及我能想到的任何第三方做出的选择。

于 2012-09-10T04:24:49.040 回答