Основываясь на решении Райана Эмерла, это добавляет черточки в правильные места, не включает в себя конечные пробелы, не множит числа и правильно обрабатывает ввод ноль (0):
public static string ToText(long n) {
return _toText(n, true);
}
private static string _toText(long n, bool isFirst = false) {
string result;
if(isFirst && n == 0) {
result = "Zero";
} else if(n < 0) {
result = "Negative " + _toText(-n);
} else if(n == 0) {
result = "";
} else if(n <= 9) {
result = new[] { "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine" }[n - 1] + " ";
} else if(n <= 19) {
result = new[] { "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" }[n - 10] + (isFirst ? null : " ");
} else if(n <= 99) {
result = new[] { "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" }[n / 10 - 2] + (n % 10 > 0 ? "-" + _toText(n % 10) : null);
} else if(n <= 999) {
result = _toText(n / 100) + "Hundred " + _toText(n % 100);
} else if(n <= 999999) {
result = _toText(n / 1000) + "Thousand " + _toText(n % 1000);
} else if(n <= 999999999) {
result = _toText(n / 1000000) + "Million " + _toText(n % 1000000);
} else {
result = _toText(n / 1000000000) + "Billion " + _toText(n % 1000000000);
}
if(isFirst) {
result = result.Trim();
}
return result;
}
Я думаю, что вы ищете viewDidLoad
. awakeFromNib
вызывается только для объектов, загружаемых из пера. Сам контроллер получает viewDidLoad:
. Поскольку вы вызываете initWithNibName: bundle:
, на самом деле он не разархивируется из пера!
UIViewController лениво загружает свое представление, только когда оно необходимо для отображения. Это касается как программного создания представления с помощью -loadView, так и разархивирования из пера.
Вы можете вызвать загрузку представления, обратившись к свойству представления UIViewController.