#pragma mark - 清理缓存
- (void)clearCache
{
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)firstObject];
NSArray *files = [[NSFileManager defaultManager]subpathsAtPath:cachePath];
for (NSString *p in files) {
NSError *error = nil;
NSString *path = [cachePath stringByAppendingPathComponent:p];
if ([[NSFileManager defaultManager]fileExistsAtPath:path]) {
[[NSFileManager defaultManager]removeItemAtPath:path error:&error];
}
}
[self performSelectorOnMainThread:@selector(clearSuccess) withObject:nil waitUntilDone:YES];
}
- (void)clearSuccess
{
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
NSString *title = @"恭喜您";
NSString *message = [NSString stringWithFormat:@"您已成功清理%.1fM缓存",self.cacheData];
UIAlertController *ac = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
NSLog(@"success");
}];
[ac addAction:cancel];
[self presentViewController:ac animated:YES completion:^{
}];
}
- (CGFloat)cacheData
{
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)firstObject];
CGFloat cacheData = [self folderSizeAtPath:cachePath];
self.cacheData = cacheData;
return cacheData;
}
- (CGFloat)folderSizeAtPath:(NSString *)folderPath
{
NSFileManager *manager = [NSFileManager defaultManager];
if (![manager fileExistsAtPath:folderPath]) {
return 0;
}
NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath:folderPath]objectEnumerator];
NSString *fileName = nil;
long long folderSize = 0;
while ((fileName = [childFilesEnumerator nextObject]) != nil) {
NSString *fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];
folderSize += [self fileSizeAtPath:fileAbsolutePath];
}
return folderSize / (1024.0 * 1024.0);
}
- (long long)fileSizeAtPath:(NSString *)filePath
{
NSFileManager *manager = [NSFileManager defaultManager];
if ([manager fileExistsAtPath:filePath]) {
return [[manager attributesOfItemAtPath:filePath error:nil]fileSize];
}
return 0;
}