Swift - 如何计算字节数并将其转换为兆字节?

Ale*_*y K 7 ios swift

我尝试添加字节的字节,以获得将从互联网上检索的照片占用的空间.

我有以下的代码,它得到的大小以字节为单位对每个ID arrayid

    var diskSpace:Int64 = 0

    for var i = 0; i < array.count; i++  {

        let id = array[i]

        let urlString = "urlToFetchData"

        if let url = NSURL(string: urlString) {
            if let data = try? NSData(contentsOfURL: url, options: []) {
                let json = JSON(data: data)

                let size = Int64(json["size"].stringValue)

                diskSpace = diskSpace + size!

            }
        }

    }

   var diskSpaceInMb = diskSpace / 1024 / 1024
   print("diskSpaceInMb is \(diskSpaceInMb)")
Run Code Online (Sandbox Code Playgroud)

例如,我尝试获取三个元素的大小,其大小以字节为单位(这些大小以字节为单位,我在json中收到)

3223653
5855382
8948976
Run Code Online (Sandbox Code Playgroud)

当执行上面的代码时,我收到的结果

diskSpaceInMb is 8
Run Code Online (Sandbox Code Playgroud)

这显然不是尝试

如何正确地将字节转换为兆字节?

Cha*_*Raj 29

let fileSizeWithUnit = ByteCountFormatter.string(fromByteCount: diskSpace, countStyle: .file)
print("File Size: \(fileSizeWithUnit)")
Run Code Online (Sandbox Code Playgroud)


Ile*_*ian 3

问题显然出在for循环上。也许 JSON 并不如您所期望的那样。

这可能失败的另一个原因是您使用关键字try?,在这种情况下,这意味着如果成功,它会为您提供一个值,否则它会返回nil。在你的情况下,它可能会默默地失败。如果你想检查是否失败,你可以添加一个else分支。

游乐场示例