我有一些文件存储在缓存目录中。我想获取这些文件的大小并按升序排列。
为了获取文件的大小,我已经完成了以下代码: -
func transformedValue(value:Any)->Any{
var convertedValue:Double = (value as AnyObject).doubleValue
var multiplyFactor = 0
let tokens = ["bytes","KB","MB","GB","TB","PB","EB", "ZB","YB"]
while convertedValue>1024 {
convertedValue = convertedValue/1024
multiplyFactor = multiplyFactor+1
}
return String.init(format:"%4.2f%@",convertedValue,tokens[multiplyFactor])
}
对于排序,以下代码完成: -
sortedFileDetails = allFileDetails.sorted(by: { $0.size < $1.size })
print("sortedFileDetails by size",sortedFileDetails)
发出─ 排序后,我得到的值是按数字排列而不考虑单位,即两个文件A和B的大小分别为2 mb和250 kb,它显示250大于2,这是错误的。
我想对它进行正确的排序。在考虑单位时,请给出一些正确的排序建议。任何一种帮助或建议都会受到赞赏。谢谢提前!
答案 0 :(得分:0)
您的数据应将原始原始大小保持为数字。应该对该数字进行排序。您只应从数字中创建一个字符串以供显示。
您应该查看ByteCountFormatter
类,以便将大小转换为字符串。无需为此编写自己的代码。