在解析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
答案 0 :(得分: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
}
答案 1 :(得分:0)
这实际上是关于表示的问题,因为它是关于代码结构的。具有命名属性的对象强烈建议使用if-elseif结构,并且字典强烈建议循环。
XML(以及所有的亲属)与名称 - 值表示完美配对。标签是名称,标签主体是值。
字典是要走的路,因此循环也是如此。这是NS解析器以及我能想到的任何第三方做出的选择。