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);

1 番目と 2 番目のログ ステートメントでは良好な結果が得られますが、FreeSpace の longLongValue を直接使用しようとすると、3 番目のログ ステートメントでは負の数が表示されます。

4

1 に答える 1

3

2 つの問題:

1) NSLog フォーマット文字列で「%lld」を使用する必要がありますhttp://developer.apple.com/mac/library/documentation/cocoa/conceptual/Strings/Articles/formatSpecifiers.html

2) このコード:

long long Result = FreeSpace - FileSize;

値ではなく、2 つの NSNumber オブジェクトのアドレスを減算しています!

私はあなたが意味すると思います:

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