我无法解决这个问题。
目前在我的Assets文件夹中,我有以下decline bench.png
图片:
在我的代码中,我在其他地方设置了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>
变量equipmentName
在decline 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>
答案 0 :(得分:0)
您说equipmentName = "Decline Bench"
,这是错误的,您的资产名为decline bench
没有大写,只需将其更改为小写然后就可以了。
必须有正确的案例,D
和d
是不同的字符
答案 1 :(得分:0)
致 @Martin R 和 @Larme 的信用:
问题是equipmentName
包含换行符和空格,导致UIImage(named: equipmentName.lowercased())
无法识别传入的String
参数equipmentName.lowercased()
。
在设置equipmentName
之前消除imageView.image
中的额外间距解决了问题。