0

尝试使用此功能时,我得到了一个否定的数字,任何人都可以提供帮助。见下面的代码

NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:dbPath error:Error];
NSDictionary *fileSysAttributes = [fileManager fileSystemAttributesAtPath:dbPath];

NSNumber *FileSize = [fileAttributes objectForKey:NSFileSize];
NSNumber *FreeSpace = [fileSysAttributes objectForKey:NSFileSystemFreeSize];


NSLog(@"FileSystem = %@",fileSysAttributes); // gives good values

NSLog(@"File Size = %d", [FileSize longLongValue]);  // gives good values

NSLog(@"System Space = %d",[FreeSpace longLongValue]);  //shows -ve for 45GB space

long long Result = FreeSpace - FileSize;

NSLog(@"Result = %d",Result);

第一个和第二个日志语句给出了很好的结果,但是当我尝试直接使用 FreeSpace 的 longLongValue 时,第三个显示一个负数

4

1 回答 1

3

两个问题:

1)您应该在您的 NSLog 格式字符串中使用“%lld” http://developer.apple.com/mac/library/documentation/cocoa/conceptual/Strings/Articles/formatSpecifiers.html

2)这段代码:

long long Result = FreeSpace - FileSize;

减去两个 NSNumber 对象的地址,而不是它们的值!

我想你的意思是:

long long Result = [FreeSpace longLongValue] - [FileSize longLongValue];
于 2010-02-23T16:23:03.207 回答