gpt4 book ai didi

ios - 以 MB 为单位的 ByteCountFormatter,结果以逗号 (,) 而不是点 (.)

转载 作者:行者123 更新时间:2023-12-05 07:09:38 27 4
gpt4 key购买 nike

我正在使用此图像扩展来计算以 MB 为单位的图像大小。我用逗号 (,) 而不是像 "1,7 MB"

这样的点 (.) 获取图像的大小
extension UIImage {        
func getFileSizeInfo(allowedUnits: ByteCountFormatter.Units = .useMB,
countStyle: ByteCountFormatter.CountStyle = .file) -> String? {
let formatter = ByteCountFormatter()
formatter.allowedUnits = allowedUnits
formatter.countStyle = countStyle
return getSizeInfo(formatter: formatter)
}

func getSizeInfo(formatter: ByteCountFormatter, compressionQuality: CGFloat = 1.0) -> String? {
guard let imageData = jpegData(compressionQuality: compressionQuality) else { return nil }
return formatter.string(fromByteCount: Int64(imageData.count))
}
}

方法调用:

var imageSizeInMB = image.getFileSizeInfo()
print(imageSizeInMB) //Output "1,7 MB"

我需要像“1.7 MB”这样的输出

我不是在寻找“替换字符串中的字符”。

请帮帮我。

最佳答案

ByteCountFormatter 没有 locale 属性来配置输出的目标语言环境,这与 NumberFormatterDateFormatter 不同以便它从系统设置中获取信息。

您可以在您的设备上将当前区域设置更改为具有所需 decimalSeparator 的区域设置,或者在您的应用程序级别以编程方式更改区域设置:

extension NSLocale {
@objc static var currentLocale = NSLocale(localeIdentifier: "en_US") // decimalSeparator = "."
//@objc static var currentLocale = NSLocale(localeIdentifier: "fr_FR") // decimalSeparator = ","
}

let formatter = ByteCountFormatter()
formatter.allowedUnits = .useMB
let text = formatter.string(fromByteCount: 1_700_000)
print(text)

输出:

1.7 MB

关于ios - 以 MB 为单位的 ByteCountFormatter,结果以逗号 (,) 而不是点 (.),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61487618/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com