Существует ли библиотека Objective-C для работы с человеком, который может считывать количество объектов, размеры файлов, даты, продолжительность и т. Д.? (и на основе основы Какао?)
Другими словами, с учетом NSDate, NSNumber, NSTimeInterval и т. Д. Или NSArray объектов; Есть ли библиотека для построения строкового представления, которое решает такие проблемы как:
- Подсчет единственного и множественного числа: отображение «2 файла», «3 файла» и т. Д., Но «1 файл» вместо «1 файла».
- Даты: отображение «вчера» вместо «2010-02-18», «последний понедельник» вместо «2010-02-15» и т. Д.
- Длительность: отображается «расчетное оставшееся время: около часа» вместо «...: 57 минут».
- Размеры файла: отображение «50 байтов» для 50 байтов, но «1,0 ГиБ» для 1073741824 байтов и т. Д.
Кажется, что такая распространенная проблема - библиотека уже существует; возможно даже уже стандартная структура, предоставленная Apple (хотя я не могу сразу найти что-нибудь об этом). Вопрос где? ;)
Примечание: Это действительно комментарий к ответу Dreamlax, но его слишком долго публиковать в качестве комментария.
Спасибо за ссылку на статью MDC. Я понимаю, что это может быть довольно сложной проблемой; даже если рассматривать только английский, не говоря уже о нескольких языках.
Опять же, тот факт, что это такая сложная проблема, является еще одной причиной, почему я хотел бы иметь библиотеку, которая решает некоторые из проблем. ;)
Размеры файлов кажутся самыми простыми, но даже в этом легко ошибиться. Рассмотрим следующий вывод с помощью кода, приведенного в качестве ответов на аналогичные вопросы на этом сайте. Первый код странным образом сообщает о 1023 байтах как 1,0 КБ. Вторые отчеты (1024 * 1024) - 1 байт размером 1024,00 КБ, тогда как первый сообщает об этом размером 1,0 МБ. Согласно Calculator.app, (1024 * 1024) - 1 байт составляет около 1,023,9990234375 КБ. Так должно ли это отображаться как «1023,99 КБ», «1024,00 КБ», «1,0 МБ», ...? Я не уверен.
Сегодня я быстро написал некоторый код для преобразования размеров файлов, а затем понял, что у него есть похожие проблемы, когда я написал для него модульные тесты.
Было бы неплохо иметь библиотеку, в которой это уже было продумано ...
1022 bytes = 1022 bytes
1023 bytes = 1.0 KB
1024 bytes = 1.0 KB
1025 bytes = 1.0 KB
(1024 * 1024) - 1 bytes = 1.0 MB
(1024 * 1024) bytes = 1.0 MB
(1024 * 1024) + 1 bytes = 1.0 MB
[Вывод с кодом из класса ObjC / Cocoa для преобразования размера в читаемую человеком строку? ]
1022 bytes = 1022.00 B
1023 bytes = 1023.00 B
1024 bytes = 1024.00 B
1025 bytes = 1.00 KB
(1024 * 1024) - 1 bytes = 1024.00 KB
(1024 * 1024) bytes = 1024.00 KB
(1024 * 1024) + 1 bytes = 1.00 MB
[Вывод с кодом из Размер файла в Snow Leopard ]
Код для получения вышеуказанного вывода (довольно очевидно, но только для справки):
NSLog(@"1022 bytes = %@", [self asFileSizeString: [NSNumber numberWithInt: 1022]]);
NSLog(@"1023 bytes = %@", [self asFileSizeString: [NSNumber numberWithInt: 1023]]);
NSLog(@"1024 bytes = %@", [self asFileSizeString: [NSNumber numberWithInt: 1024]]);
NSLog(@"1025 bytes = %@", [self asFileSizeString: [NSNumber numberWithInt: 1025]]);
NSLog(@"(1024 * 1024) - 1 bytes = %@", [self asFileSizeString: [NSNumber numberWithInt: (1024 * 1024) - 1]]);
NSLog(@"(1024 * 1024) bytes = %@", [self asFileSizeString: [NSNumber numberWithInt: (1024 * 1024)]]);
NSLog(@"(1024 * 1024) + 1 bytes = %@", [self asFileSizeString: [NSNumber numberWithInt: (1024 * 1024) + 1]]);