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
语句,因此我已更新以说明这一点。
我正在尝试编写一个 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
语句,因此我已更新以说明这一点。