在swift4中考虑他们的单位时,根据他们的大小排列文件

时间:2018-03-08 16:32:59

标签: ios compare swift4

我有一些文件存储在缓存目录中。我想获取这些文件的大小并按升序排列。

为了获取文件的大小,我已经完成了以下代码: -

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,这是错误的。

我想对它进行正确的排序。在考虑单位时,请给出一些正确的排序建议。任何一种帮助或建议都会受到赞赏。谢谢提前!

1 个答案:

答案 0 :(得分:0)

您的数据应将原始原始大小保持为数字。应该对该数字进行排序。您只应从数字中创建一个字符串以供显示。

您应该查看ByteCountFormatter类,以便将大小转换为字符串。无需为此编写自己的代码。