Query Available iOS Disk Space with Swift

后端 未结 4 2054
野趣味
野趣味 2020-12-02 18:56

I\'m trying to get the available iOS device storage using Swift. I found this function here

        func deviceRemainingFreeSpaceInBytes() ->         


        
4条回答
  •  南笙
    南笙 (楼主)
    2020-12-02 19:40

    I have written a class to get available/used memory using Swift. Demo at: https://github.com/thanhcuong1990/swift-disk-status

    Upgrade to support Swift 3.

    import UIKit
    
    class DiskStatus {
    
        //MARK: Formatter MB only
        class func MBFormatter(_ bytes: Int64) -> String {
            let formatter = ByteCountFormatter()
            formatter.allowedUnits = ByteCountFormatter.Units.useMB
            formatter.countStyle = ByteCountFormatter.CountStyle.decimal
            formatter.includesUnit = false
            return formatter.string(fromByteCount: bytes) as String
        }
    
    
        //MARK: Get String Value
        class var totalDiskSpace:String {
            get {
                return ByteCountFormatter.string(fromByteCount: totalDiskSpaceInBytes, countStyle: ByteCountFormatter.CountStyle.binary)
            }
        }
    
        class var freeDiskSpace:String {
            get {
                return ByteCountFormatter.string(fromByteCount: freeDiskSpaceInBytes, countStyle: ByteCountFormatter.CountStyle.binary)
            }
        }
    
        class var usedDiskSpace:String {
            get {
                return ByteCountFormatter.string(fromByteCount: usedDiskSpaceInBytes, countStyle: ByteCountFormatter.CountStyle.binary)
            }
        }
    
    
        //MARK: Get raw value
        class var totalDiskSpaceInBytes:Int64 {
            get {
                do {
                    let systemAttributes = try FileManager.default.attributesOfFileSystem(forPath: NSHomeDirectory() as String)
                    let space = (systemAttributes[FileAttributeKey.systemSize] as? NSNumber)?.int64Value
                    return space!
                } catch {
                    return 0
                }
            }
        }
    
        class var freeDiskSpaceInBytes:Int64 {
            get {
                do {
                    let systemAttributes = try FileManager.default.attributesOfFileSystem(forPath: NSHomeDirectory() as String)
                    let freeSpace = (systemAttributes[FileAttributeKey.systemFreeSize] as? NSNumber)?.int64Value
                    return freeSpace!
                } catch {
                    return 0
                }
            }
        }
    
        class var usedDiskSpaceInBytes:Int64 {
            get {
                let usedSpace = totalDiskSpaceInBytes - freeDiskSpaceInBytes
                return usedSpace
            }
        }
    
    }
    

    Demo:

    get disk space status with Swift

提交回复
热议问题