Swift分配图像如果string =='Something'

时间:2015-01-22 20:00:56

标签: ios json uiimage

我正在尝试编写一个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或者警告,所以我知道占位符正在工作,但现在更改了变量。

我哪里错了? 谢谢 马修

1 个答案:

答案 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语句,所以我已经更新以解释这一点。