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

时间:2015-11-09 15:37:25

标签: ios swift

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

我有以下代码,它为array id中的每个ID获取字节大小

    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)")
例如,我尝试获取三个元素的大小,这些元素的大小以字节为单位(这些大小以字节为单位,我在json中收到)

3223653
5855382
8948976

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

的结果
diskSpaceInMb is 8

显然没有尝试

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

2 个答案:

答案 0 :(得分:23)

let fileSizeWithUnit = ByteCountFormatter.string(fromByteCount: diskSpace, countStyle: .file)
print("File Size: \(fileSizeWithUnit)")

答案 1 :(得分:3)

问题显然在for循环中。也许JSON并不像你期望的那样。

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

playground example