我有一个if-else语句,它不像我想要的那样工作。这是保存变量的语句之前的方法:
[self.conditionsLabel setText:weather.weathercondition];
NSLog(@"%@", weather.weathercondition);
condition = weather.weathercondition;
这是if-else语句:
if ([weather.weathercondition isEqualToString:@"Clear"]) {
conditionsImageView.image = [UIImage imageNamed:@"Sun.png"];
}
else {
conditionsImageView.image = [UIImage imageNamed:@"Partly_Sunny.png"];
}
在我的控制台中,weather.weathercondition显而易见,但是当它通过if-else语句时,它总是转到else并显示Partly_Sunny.png。我正在测试它,我知道字符串将是“清除”。我从XML源获取数据,如果我在互联网上查看它,这就是它显示数据的方式:
<weatherDesc>
<![CDATA[ Clear ]]>
这是原因吗?它在清除之前说CDATA,但在代码中,它总是记录为Clear,没有CDATA和其他东西。我尝试将<![CDATA[ Clear ]]>
放在isEqualToString:中,但结果相同。任何帮助将不胜感激。我是解析XML的新手,而且是Objective-C的新手,所以请原谅任何错误(不在代码中,但一般而言)。我非常感谢你的帮助。
答案 0 :(得分:2)
CDATA是一个构造,表示内部应该被视为纯文本(不是XML)。当XML解析器检测到它时,它将删除CDATA构造并在构造中显示数据。
答案 1 :(得分:0)
设置而不是
[self.conditionsLabel setText:weather.weathercondition];
使用此行
[self.conditionsLabel setText:[NSString stringWithFormat:@"%@", weather.weathercondition]];
之后获取weather.weathercondition
获取NSString
并检查if语句
答案 2 :(得分:0)
尝试替换
<weatherDesc>
<![CDATA[ Clear ]]>
到
<weatherDesc>
<![CDATA[Clear]]>