Изменить эту строку:
if(amount.text == "" || amount.text == "$")
К этому:
if ["", "$", "€", "¥"].contains(amount.text!)
Вы можете определить массив распознанных валют:
let currencyStrings = ["$", "€", "¥"]
и используйте его так:
if currencyStrings.contains(amount.text!) || amount.text!.isEmpty
Что касается заполнителя, используйте свойство placeholder
при создании текстового поля (а не в textFieldDidEndEditing
):
amount.placeholder = amountPlaceHolder
(То же самое относится к текстовому полю name
)
Бонус 1
Чтобы получить все коды и символы валют, вы можете использовать этот фрагмент:
let formatter = NumberFormatter()
let currencies: Set<String> = Set(Locale.availableIdentifiers
.map { Locale(identifier: $0) }
.reduce(Set<String>(), { set, locale in
var tempo = set
formatter.locale = locale
if let code = formatter.currencyCode {
tempo.insert(code)
}
if let symbol = formatter.currencySymbol {
tempo.insert(symbol)
}
return tempo
}))
Примите во внимание, что этот набор содержит этот символ ¤
, который обозначает неопределенная валюта . Я не смог получить символ валюты для этих двух локалей: kea_CV
и pt_CV
.
Бонус 2
Вот еще один массив кодов и символов для общих / активных криптовалют :
let crypto = ["BTC", "XBT", "₿", "LTC", "Ł", "NMC", "STC", "BCN", "PPC", "DOGE", "XDG", "Ð", "FTC", "₣", "GRC", "XPM", "XRP", "NXT", "AUR", "KOI", "COYE", "DASH", "NEO", "MZC", "XMR", "XEM", "POT", "AMP", "TIT", "XVG", "XLM", "VTC", "ETH", "ETC", "USDT", "NEU", "DCR", "LSK", "WAVES", "ZEC", "BCC", "BCH", "EOS", "ADA"]