在我的情况下,想要在我的应用程序存储空间达到一定级别时显示警报。我在StackOverflow中看到了一些提及的代码
我没有找到任何与我想要的相关的东西。如果我错过任何指出的话。
简单明了:想要我的应用程序的存储大小,就像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。但是我得到了这段代码以获得免费记忆。实际上是为了获得可用内存或获取应用程序内存。
答案 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())