Swift 如果字符串 == 'Something' 分配图像

Swift Assign Image If string == 'Something'

我正在尝试编写一个 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 个:

服务{当前事件{id:"up",图片:"image.url.location"}}

我将服务作为 NSDictionary,将当前事件作为其中的另一个服务,当我从 'image' 中创建 NSURL 并将 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% 的服务要么启动要么警告,所以我知道占位符正在工作,但现在变量正在改变。

我哪里错了? 谢谢 马修

问题是您不断将 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,但我已将其保留,因为它在您的原始代码中。

您的第二个和第三个 if 语句可能是 else if 语句,因此我已更新以说明这一点。