将String变量传递给UIImage构造函数不会返回UIImage?

时间:2017-12-05 09:18:34

标签: ios swift uiimage

我无法解决这个问题。

目前在我的Assets文件夹中,我有以下decline bench.png图片:

enter image description here

在我的代码中,我在其他地方设置了String变量equipmentName

我将UIImageView图像设置为:

equipmentImageView.image = UIImage(named: equipmentName)

但是,图像永远不会返回。

我检查了图像是否真的可以返回:

if let image = UIImage(named: equipmentName)
{
    print("GOOD")
}
else
{
    print("BAD")
}

打印出BAD

但是,如果我用实际的字符串名称替换equipmentName,它会返回正确的图像,并输出GOOD

if let image = UIImage(named: "decline bench")
{
    print("GOOD")
}
else
{
    print("BAD")
}

是什么给出了?

它们都是同一个东西,类型是String所以为什么传递类型equipmentName的变量String不起作用,但是传入一个文字字符串呢? / p>

变量equipmentNamedecline bench设置之前还包含字符串equipmentImageView.image

是否与Assets文件夹中图像的命名有关?

请帮我理解。谢谢!

更多信息: 在我的代码中,equipmentName实际上是以大写的第一个字母存储的,如Decline Bench

当我设置图片时,我实际做:

equipmentImageView.image = UIImage(named: equipmentName.lowercased())

equipmentName.lowercased()仍会返回String,但无效。

但是,执行以下操作确实有效:

equipmentName = "decline bench"
equipmentImageView.image = UIImage(named: equipmentName)

这里有什么不同,我做得不对?

更新:以下打印输出:

print(Data(equipmentName.utf8) as NSData)< 4465636c 696e6520 42656e63 680a2020 20202020 20202020 2020>

print(Data(equipmentName.lowercased().utf8) as NSData)< 6465636c 696e6520 62656e63 680a2020 20202020 20202020 2020>

2 个答案:

答案 0 :(得分:0)

您说equipmentName = "Decline Bench",这是错误的,您的资产名为decline bench没有大写,只需将其更改为小写然后就可以了。

必须有正确的案例,Dd是不同的字符

答案 1 :(得分:0)

@Martin R @Larme 的信用:

问题是equipmentName包含换行符和空格,导致UIImage(named: equipmentName.lowercased())无法识别传入的String参数equipmentName.lowercased()

在设置equipmentName之前消除imageView.image中的额外间距解决了问题。