Измените отрицательный формат NSNumberFormatter от (xxx.xx) до-xxx.xx

Ошибка на стороне NOT NULL. В какой-то момент вам придется решить, что означает «NULL» в вашем приложении - скорее всего, для разных столбцов это будет по-разному. Некоторые из распространенных случаев: «не указано», «неизвестно», «неприменимо», «еще не произошло» и т. Д. Вы будете знать, когда вам нужно одно из этих значений, а затем вы можете соответствующим образом разрешить столбец NULLable и закодируйте логику вокруг него.

Разрешение случайным вещам быть NULL, рано или поздно, всегда кошмар IME. Используйте NULL осторожно и экономно - и знайте, что это значит в вашей логике.

Редактировать: Кажется, есть идея, что я выступаю за НЕТ нулевых столбцов, когда-либо. Это нелепо. NULL полезен , но только там, где ожидается.

Хороший пример - пример Le Dorfier DateOfDeath. NULL DateOfDeath будет означать «еще не произошло». Теперь я могу написать мнение LivingPersons WHERE DateOfDeath IS NULL.

Но что означает NULL OrderDate? Что заказ еще не сделан? Даже если есть запись в таблице заказов? Как насчет пустого адреса? Именно эти мысли должны пройти через вашу голову, прежде чем вы позволите NULL быть значением.

Возвращаясь к DateOfDeath - запрос людей WHERE DateOfDeath > '1/1/1999' не вернул бы NULL-записей - даже если мы логически знаем, что они должны умереть после 1999 . Это то, что вы хотите? Если нет, то лучше включить OR DateOfDeath IS NULL в этот запрос. Если вы разрешите всем столбцам быть NULL, вам придется думать об этом каждый раз, когда вы пишете запрос . IME, это слишком много для умственного налога для 10% или около того столбцов, которые на самом деле имеют законное значение, когда они равны NULL.

8
задан Meltemi 18 June 2009 в 07:59
поделиться

3 ответа

Если вы посмотрите на раздел «Строки формата» в Руководстве по программированию форматирования данных для какао :

Строка формата использует шаблоны формата из Технический стандарт Unicode № 35 (эта ссылка относится к версии tr35-6; средства форматирования для Mac OS X v10.4 используют версию tr35-4 ).

Изменить:

Если вы хотите установить строку формата на основе валют, вы можете использовать символ ¤ , например:

[formatter setFormat:@"¤#,##0.00"];

Это добавит символ валюты для текущей локализации вместо ¤ ].

Следовательно, применение той же концепции к строке отрицательного формата:

[formatter setFormat:@"-¤#,##0.00"];

Это также применит символ валюты вместо ¤ для текущей локализации.

18
ответ дан 5 December 2019 в 08:00
поделиться

Хорошо, поэтому ответ что у меня есть работа:

[currencyFormatter setNegativeFormat:@"-¤#,##0.00"];

ключ это whatzit? символ «¤». Не знаете, как это называется? кто угодно? но он представляет локализованную валюту в этих строках формата ...

1
ответ дан 5 December 2019 в 08:00
поделиться

В этом случае он ищет для формата NSString. Посмотрите здесь подробные сведения о строке формата .

Если вы хотите, чтобы отрицательное значение 12,345,67 отображалось как -12,345,67 , то я считаю, что правильное значение NSString - @ "- #, ## 0.00"

Я также заметил следующее предложение в документе, ссылка на который приведена выше:

Если вы не укажете формат для отрицательные значения, указанный формат для положительных значений используется предшествующий знаком минус (-).

РЕДАКТИРОВАТЬ:
Обновление для 10.4 и более поздних версий: Вот PDF-файл с описанием поведения в 10.4 и более поздних версиях
И, как указано в этом документе, здесь данные о необходимом формате для 10.4 и более поздних версий .
Из этого документа следует, что правильная строка может быть такой: @ "- #, ## 0. ##"

1
ответ дан 5 December 2019 в 08:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: