0

我有一个 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 源获取数据,如果我在 Internet 上查看数据,这就是它显示数据的方式:

<weatherDesc>
<![CDATA[ Clear ]]>

这是原因吗?它在 Clear 之前表示 CDATA,但在代码中,它始终记录为 Clear,没有 CDATA 和其他内容。我尝试将其<![CDATA[ Clear ]]>放入 isEqualToString:,但结果相同。任何帮助将不胜感激。我是解析 XML 的新手,并且对 Objective-C 比较陌生,所以请原谅任何错误(不是在代码中,而是在一般情况下)。我非常感谢帮助。

4

3 回答 3

2

CDATA 是一种结构,表示内部的任何内容都应视为纯文本(而不是 XML)。当 XML 解析器检测到它时,它将删除 CDATA 构造并在构造内呈现数据。

于 2012-06-19T04:10:02.347 回答
0

设置而不是

[self.conditionsLabel setText:weather.weathercondition];

使用这条线

[self.conditionsLabel setText:[NSString stringWithFormat:@"%@", weather.weathercondition]];

之后得到你的weather.weathercondition

获取NSString并检查 if 语句

于 2012-06-19T04:11:06.397 回答
0

尝试更换

<weatherDesc>
<![CDATA[ Clear ]]>

<weatherDesc>
<![CDATA[Clear]]>
于 2012-06-19T04:14:56.307 回答