我正在尝试编写一个Swift iOS应用程序,该应用程序根据API JSON响应的结果显示四个图像之一。
我在Xcode项目中有4个图像,定义为:
let crossStatus: UIImage = UIImage(named:"cross-circle")!;
let exclamationStatus: UIImage = UIImage(named:"exclamation")!;
let informationStatus: UIImage = UIImage(named:"information")!;
let tickStatus: UIImage = UIImage(named:"tick-circle")!;
该应用程序发出API请求并返回JSON:
服务{current-events {id:" up",image:" image.url.location"}}
我将NSDictionary和当前事件作为另一个内部服务,当我用'图像'并将NSURL弹出到页面按预期工作的单元格中,但我希望能够加载本地图像,等待“#id;”的响应。
IF的代码是:
let statusID = rowData["id"] as? String;
let imgData : UIImage = crossStatus;
if (statusID == "up") {
let imgData : UIImage = tickStatus;
}
if (statusID == "warning") {
let imgData : UIImage = exclamationStatus;
}
if (statusID == "down") {
let imgData : UIImage = crossStatus;
}
else {
let imgData : UIImage = exclamationStatus;
}
当我现在运行代码时,会调用crossStatus映像,但是90%的服务都是up或者警告,所以我知道占位符正在工作,但现在更改了变量。
我哪里错了? 谢谢 马修
答案 0 :(得分:3)
问题在于您将imgData
重新声明为局部变量,以使条件中的imgData
常量与条件之外的imgData
常量不同;所以原始的imgData
对象永远不会改变。您必须将原始imgData
变为变量,然后更新它,例如:
let statusID = rowData["id"] as? String;
var imgData : UIImage = crossStatus;
if (statusID == "up") {
imgData = tickStatus;
} else if (statusID == "warning") {
imgData = exclamationStatus;
} else if (statusID == "down") {
imgData = crossStatus;
} else {
imgData = exclamationStatus;
}
注意:您无需在条件之前初始化imgData
,但我已将其保留原始代码中。
你可能认为你的第2和第3 if语句是else if
语句,所以我已经更新以解释这一点。