I want to calculate difference over storage usage. I'm looking for the difference between the number A and the number B.
I'm using a simulator
A Number = 106581282816 -> Int64 (freeDiskSpaceInBytes)
B Number = 250790436864 -> Int64 (totalDiskSpaceInBytes)
When I use the calculator, the result is 0.42 as I want. -> A / B
When I calculate in Swift, the result is 0 and I couldn't find a solution. How can I solve this?
Here is the code I print to the console:
print(UIDevice.current.freeDiskSpaceInBytes / UIDevice.current.totalDiskSpaceInBytes) --> Result: 0
I am using the following extension.
// MARK: Get String Value
var totalDiskSpaceInGB: String {
return ByteCountFormatter.string(fromByteCount: totalDiskSpaceInBytes, countStyle: ByteCountFormatter.CountStyle.decimal)
}
var freeDiskSpaceInGB: String {
return ByteCountFormatter.string(fromByteCount: freeDiskSpaceInBytes, countStyle: ByteCountFormatter.CountStyle.decimal)
}
var usedDiskSpaceInGB: String {
return ByteCountFormatter.string(fromByteCount: usedDiskSpaceInBytes, countStyle: ByteCountFormatter.CountStyle.decimal)
}
// MARK: Get raw value
var totalDiskSpaceInBytes: Int64 {
guard let systemAttributes = try? FileManager.default.attributesOfFileSystem(forPath: NSHomeDirectory() as String),
let space = (systemAttributes[FileAttributeKey.systemSize] as? NSNumber)?.int64Value else { return 0 }
return space
}
var freeDiskSpaceInBytes: Int64 {
if #available(iOS 11.0, *) {
if let space = try? URL(fileURLWithPath: NSHomeDirectory() as String).resourceValues(forKeys: [URLResourceKey.volumeAvailableCapacityForImportantUsageKey]).volumeAvailableCapacityForImportantUsage {
return space
} else {
return 0
}
} else {
if let systemAttributes = try? FileManager.default.attributesOfFileSystem(forPath: NSHomeDirectory() as String),
let freeSpace = (systemAttributes[FileAttributeKey.systemFreeSize] as? NSNumber)?.int64Value {
return freeSpace
} else {
return 0
}
}
}
var usedDiskSpaceInBytes: Int64 {
return totalDiskSpaceInBytes - freeDiskSpaceInBytes
}
}