使用此代码,如果复选框是NSOnState,我确定文件大小,但文件夹值始终为0.目录是正确的。 你能救我吗?
unsigned long long resultsize=0;
if(imagehistoryS.state == NSOnState) {
NSString *path = [NSString stringWithFormat:@"Users/Giovanni/Desktop/test", [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0]];
NSNumber *fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:path error:nil] objectForKey:NSFileSize];
resultsize += [fileSize doubleValue];
}
[result setStringValue:[NSString stringWithFormat:@"Total size items selected: %f", resultsize]];
答案 0 :(得分:1)
您传入了一个字符串,但指定了NSUserDomainMask
。我试过这个并且它有效。
NSUInteger resultSize = 0;
NSFileManager *fm = [[NSFileManager alloc] init];
NSURL *LibraryURL = [[fm URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask] lastObject];
NSURL *previewsURL = [LibraryURL URLByAppendingPathComponent:@"/Caches/com.apple.Safari/Webpage Previews"];
resultSize = [[[fm attributesOfItemAtPath:[previewsURL path] error:nil] objectForKey:NSFileSize] unsignedIntegerValue];
NSLog(@"Size: %lu", resultSize);
这适用于ARC环境。
注意,我尽可能使用NSURL而不是NSString文件路径。此外,您无需在搜索路径中对用户名进行硬编码。
已更新,可在评论中显示特定文件夹
答案 1 :(得分:0)
在您stringWithFormat
中,您缺少格式说明符%@
。