gpt4 book ai didi

ios - 有没有办法确定应用程序在 iOS 中使用的磁盘空间量?

转载 作者:行者123 更新时间:2023-11-29 11:35:08 24 4
gpt4 key购买 nike

我看过很多关于如何获取 iOS 设备的可用空间量,或者 iOS 设备有多少可用空间的帖子,但是有没有办法确定应用程序本身使用了多少空间? (包括应用程序本身及其所有资源/文档/缓存/等)。这与在“设置”->“通用”->“iPhone 存储”中可以看到的值相同。

最佳答案

我最终想出了如何做到这一点:

我在 NSFileManager 上创建了一个类别并添加了:

-(NSUInteger)applicationSize
NSString *appgroup = @"Your App Group"; // Might not be necessary in your case.

NSURL *appGroupURL = [self containerURLForSecurityApplicationGroupIdentifier:appgroup];
NSURL *documentsURL = [[self URLsForDirectory: NSDocumentDirectory inDomains: NSUserDomainMask] firstObject];
NSURL *cachesURL = [[self URLsForDirectory: NSCachesDirectory inDomains: NSUserDomainMask] firstObject];

NSUInteger appGroupSize = [appGroupURL fileSize];
NSUInteger documentsSize = [documentsURL fileSize];
NSUInteger cachesSize = [cachesURL fileSize];
NSUInteger bundleSize = [[[NSBundle mainBundle] bundleURL] fileSize];
return appGroupSize + documentsSize + cachesSize + bundleSize;
}

我还在 NSURL 上添加了一个类别,内容如下:

-(NSUInteger)fileSize
{
BOOL isDir = NO;
[[NSFileManager defaultManager] fileExistsAtPath:self.path isDirectory:&isDir];
if (isDir)
return [self directorySize];
else
return [[[[NSFileManager defaultManager] attributesOfItemAtPath:self.path error:nil] objectForKey:NSFileSize] unsignedIntegerValue];
}

-(NSUInteger)directorySize
{
NSUInteger result = 0;
NSArray *properties = @[NSURLLocalizedNameKey, NSURLCreationDateKey, NSURLLocalizedTypeDescriptionKey];
NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtURL:self includingPropertiesForKeys:properties options:NSDirectoryEnumerationSkipsHiddenFiles error:nil];
for (NSURL *url in files)
{
result += [url fileSize];
}

return result;
}

如果您有大量应用数据,运行起来需要一点时间,但它确实有效。

关于ios - 有没有办法确定应用程序在 iOS 中使用的磁盘空间量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49991278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com