Числа, отформатированные GRMustache, или механизм шаблонов HTML с форматированием чисел в iOS - PullRequest
1 голос
/ 20 января 2012

Я не уверен, как лучше это сделать. Я пытался решить это по-своему, , но пока не получилось . Я попытался использовать GRMustache, только чтобы понять, что я пытаюсь отобразить float s, которые просто выглядят отвратительно в шаблоне, который я пытаюсь использовать.

По сути, у меня есть модель, которую я пытаюсь выводить в виде HTML через шаблон. В идеале я просто помещаю имена переменных / ключевые пути в шаблон, и шаблон просто анализируется с фактическими значениями (в значительной степени), представленными на месте. Но модель, которую я использую, использует float для всех своих вычислений, и мне бы очень хотелось, чтобы они отображались в виде целочисленных строк через запятую (например, (float)9382.233325 => "9,382").

Кажется, я не могу найти в GRMustache никакой документации, которая бы описывала подобную ситуацию, но я думаю, что это не может быть необычным требованием. Кто-нибудь знает, как это сделать с помощью GRMustache или с помощью какой-либо другой техники?

Ответы [ 2 ]

2 голосов
/ 20 января 2012

Я автор GRMustache.

Нет, и в GRMustache никогда не будет никаких возможностей форматирования с плавающей точкой, потому что в ОС уже есть идеально подходящий инструмент: NSNumberFormatter.

Поскольку вы даете GRMustache свои модельные объекты, вот мой совет:

Объявите категорию в вашей модели и добавьте конкретный метод для каждого вашего отформатированного значения:

@interface MYModel(GRMustache)
// name would match your original value property name
- (NSString *)formattedValue;
@end

В файле реализации используйте NSNumberFormatter:

@implementation MYModel(GRMustache)
- (NSString *)formattedValue
{
  // Check the NSNumberFormatter reference for initializing
  // the NSSNumberFormatter for your desired output.
  NSNumberFormatter *formatter = [NSSNumberFormatter ...]; 
  return [formatter stringFromNumber: [self value]];
}
@end

Остерегайтесь создания многих экземпляров NSNumberFormatter, это может быть дорогостоящим. Хорошей практикой является предоставление общего метода, который возвращает общий метод. Приведенный выше код является лишь подсказкой для техники.

Наконец, в вашем шаблоне замените теги {{value}} на {{formattedValue}}.

Счастливого GRMustache!

1 голос
/ 02 февраля 2012

GRMustache 1.12 теперь имеет улучшенный API для форматирования чисел: https://github.com/groue/GRMustache/blob/master/Guides/sample_code/number_formatting.md

...