如何获取我的iOS应用程序的存储和内存大小?

时间:2017-07-11 06:24:05

标签: ios size local-storage storage

在我的情况下,想要在我的应用程序存储空间达到一定级别时显示警报。我在StackOverflow中看到了一些提及的代码

  1. 从网络上清除临时缓存和图像
  2. 克服所有存储内存大小
  3. RAM大小等,
  4. 我没有找到任何与我想要的相关的东西。如果我错过任何指出的话。

    简单明了:想要我的应用程序的存储大小,就像Android显示应用程序存储占用大小(在设置中)

    更新1:

    转到设置>一般>存储& iCloud用法>管理存储 我的应用显示20 MB也提到Documents 7 Data

    -(natural_t) get_free_memory {
    mach_port_t host_port;
    mach_msg_type_number_t host_size;
    vm_size_t pagesize;
    host_port = mach_host_self();
    host_size = sizeof(vm_statistics_data_t) / sizeof(integer_t);
    host_page_size(host_port, &pagesize);
    vm_statistics_data_t vm_stat;
    
    if (host_statistics(host_port, HOST_VM_INFO, (host_info_t)&vm_stat, &host_size) != KERN_SUCCESS) {
        NSLog(@"Failed to fetch vm statistics");
        return 0;
    }
    
    /* Stats in bytes */
    natural_t mem_free = vm_stat.free_count * pagesize;
    NSLog(@"mem_free %u", mem_free);
    return mem_free;
    }
    

    我正在使用此代码检查此代码还提供大约20 MB。但是我得到了这段代码以获得免费记忆。实际上是为了获得可用内存或获取应用程序内存。

1 个答案:

答案 0 :(得分:1)

要获取存储信息,请使用以下代码( Swift 3 )。

//
//  Storage.swift
//  BCScanner2
//
//  Created by Admin on 2017-07-11.
//  Copyright © 2017 com.odyssey. All rights reserved.
//

import Foundation

class Storage
{

    static func getFreeSpace() -> Int64
    {
        do
        {
            let attributes = try FileManager.default.attributesOfFileSystem(forPath: NSHomeDirectory() as String)

            return ((attributes[FileAttributeKey.systemFreeSize] as? NSNumber)?.int64Value)!
        }
        catch
        {
            return 0
        }
    }

    static func getTotalSpace() -> Int64
    {
        do {
            let attributes = try FileManager.default.attributesOfFileSystem(forPath: NSHomeDirectory() as String)
            return ((attributes[FileAttributeKey.systemSize] as? NSNumber)?.int64Value)!
        } catch {
            return 0
        }
    }

    static func getUsedSpace() -> Int64
    {
        return getTotalSpace() - getFreeSpace()
    }




}




extension Int64
{
    func toMB() -> String {
        let formatter = ByteCountFormatter()
        formatter.allowedUnits = ByteCountFormatter.Units.useMB
        formatter.countStyle = ByteCountFormatter.CountStyle.decimal
        formatter.includesUnit = false
        return formatter.string(fromByteCount: self) as String
    }
}

并打电话给。 。

print(Storage.getTotalSpace().toMB())
print(Storage.getFreeSpace().toMB())
print(Storage.getUsedSpace().toMB())