NSFileSystemFreeSize - PullRequest
       13

NSFileSystemFreeSize

0 голосов
/ 23 февраля 2010

Я получаю отрицательный номер при попытке использовать эту функцию, может кто-нибудь помочь. см. код ниже

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

Первый и второй операторы журнала дают хорошие результаты, но третий показывает отрицательное число, когда я пытаюсь напрямую использовать longLongValue FreeSpace

1 Ответ

3 голосов
/ 23 февраля 2010

Две проблемы:

1) Вы должны использовать "% lld" в строках формата NSLog 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];
...