Существует ли константа для определения размера ГБ в Какао? - PullRequest
8 голосов
/ 21 января 2010

Apple изменила , как они вычисляют КБ, МБ и ГБ в Max OS X 10,6 . Вместо 1024 они используют 1000.

Мой вопрос: как с этим справиться в моем коде? Я пытаюсь получить количество свободного места, поэтому я получаю количество байтов через NSFileManager. Когда я показываю это пользователю, мне нужно по-разному превращать его в ГБ в зависимости от того, установлены они на 10,5 или 10,6.

Есть ли встроенная константа для размера ГБ? (Или как бы вы ни назвали номер 1024?) Было немного глупо определять мой собственный.

## I'm currently doing something like this.
if (running10_6) {
    double gbConst = 1000 * 1000 * 1000;
} else {
    double gbConst = 1024 * 1024 * 1024;
}

NSDictionary *attr = [NSFM attributesOfFileSystemForPath:@"/" error:&error];
double bytes = [[attr objectForKey:NSFileSystemFreeSize] doubleValue];
double freeGB = bytes / gbConst;

1 Ответ

5 голосов
/ 17 ноября 2013

Начиная с OS X 10.8 / iOS 6.0, новый NSByteCountFormatter делает именно то, что вы хотите:

enum {
   NSByteCountFormatterCountStyleFile   = 0,
   NSByteCountFormatterCountStyleMemory = 1,
   NSByteCountFormatterCountStyleDecimal = 2,
   NSByteCountFormatterCountStyleBinary  = 3
};

Десятичные / двоичные: 1000 и 1024. Файл / память - это псевдонимы для того, который ОС использует для этой меры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...