TheGreatCornholio Asked: 2024-11-19 19:55:32 +0800 CST2024-11-19 19:55:32 +0800 CST 2024-11-19 19:55:32 +0800 CST 将 UIImage.size 转换为字符串 772 if(image != nil){ mediaSize = String(image!.size.width) + "|" + String(image!.size.height) } 结果应该是这样的"400|300" 我收到错误:No exact matches in call to initializer image是UIImage,我在尝试将大小转换为字符串之前将其上传到服务器,并且它是有效的 关于此问题的其他问题没有帮助 2 个回答 Voted Best Answer David Pasztor 2024-11-19T20:09:28+08:002024-11-19T20:09:28+08:00 问题是和height都是width,CGFloat不能直接转换为String使用String.init。 您可以将它们转换为Double,然后String从初始化Double guard let image else { return } let width = Double(image.size.width) let height = Double(image.size.height) mediaSize = String(width) + "|" + String(height) 或者简单地使用字符串插值,它确实支持CGFloat。 mediaSize = "\(image.size.width) | \(image.size.height)" 但是,请注意,您正在将浮点数转换为String,因此最终可能会得到一个带有大量小数位的不方便用户使用的值。如果您知道您的值是整数,请使用 将它们转换为整数,Int(image.size.width)或者使用 或 将它们格式化为固定数量的小数。String(format:_:)NumberFormatter DonMag 2024-11-20T01:57:09+08:002024-11-20T01:57:09+08:00 您还可以使用String(format:...): var mediaSize: String = "" let image = UIImage(named: "myImage") if let image { mediaSize = String(format: "%0.0f|%0.0f", image.size.width, image.size.height) print(mediaSize) } 该%0.0f方法是将浮点数转换为字符串,不带小数。 所以你的结果将是"400|300"
问题是和
height
都是width
,CGFloat
不能直接转换为String
使用String.init
。您可以将它们转换为
Double
,然后String
从初始化Double
或者简单地使用字符串插值,它确实支持
CGFloat
。但是,请注意,您正在将浮点数转换为
String
,因此最终可能会得到一个带有大量小数位的不方便用户使用的值。如果您知道您的值是整数,请使用 将它们转换为整数,Int(image.size.width)
或者使用 或 将它们格式化为固定数量的小数。String(format:_:)
NumberFormatter
您还可以使用
String(format:...)
:该
%0.0f
方法是将浮点数转换为字符串,不带小数。所以你的结果将是
"400|300"