Я действительно хочу реализовать категорию, такую как 'UILabel + formattedText', которая позволяет мне выполнять метод, который будет красиво форматировать текст на видимом дисплее метки, но любой код, который смотрит на label.text, просто видит неформатированную числовую строку , Я знаю, что это, вероятно, очень просто. Дело в том, что я не могу найти синтаксис для этого. Как бы это сработало?
Вот мой пример для метода внутри контроллера вида:
- (void)UpdateLabels{
if(!formatter){//initialize formatter if there isn't one yet.
formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setPositiveFormat:@",##0.##"];
[formatter setNegativeFormat:@",##0.##"];
[formatter setMaximumFractionDigits:15];
[formatter setMaximumIntegerDigits:15];
}
NSRange eNotation =[rawDisplay rangeOfString: @"e"];//if there's an 'e' in the string, it's in eNotation.
if ([rawDisplay isEqual:@"Error"]) {
display.text=@"Error";
backspaceButton.enabled = FALSE;
}else if (eNotation.length!=0) {
//if the number is in e-notation, then there's no special formatting necessary.
display.text=rawDisplay;
backspaceButton.enabled =FALSE;
} else {
backspaceButton.enabled =([rawDisplay isEqual:@"0"])? FALSE: TRUE; //disable backspace when display is "0"
//convert the display strings into NSNumbers because NSFormatters want NSNumbers
// then convert the resulting numbers into pretty formatted strings and stick them onto the labels
display.text=[NSString stringWithFormat:@"%@", [formatter stringFromNumber: [NSNumber numberWithDouble:[rawDisplay doubleValue]]]];
}
}
Таким образом, я хочу, чтобы по крайней мере функциональность рисования ярлыка была включена в ярлык. Кстати, этот код верен MVC? Это моя первая попытка.
Кроме того, пока я здесь, я могу также спросить: это входит в электронную запись с относительно небольшим числом цифр в виде двойного числа. Но когда я пытаюсь сменить удвоение на что-то другое, например, longlong, я получаю очень странные результаты. Как я могу иметь больше точности и все еще выполнять все эти операции?