Я рассмотрел другие вопросы здесь о подписи со словарями, и я не видел ничего такого, что вполне соответствовало бы моему сценарию. Возможно, я все еще слишком новичок в Swift, чтобы понять это, но в любом случае это мой сценарий. Я получаю типичный не словарь «Подстрочный» с строкой типа. Я видел сообщения здесь о том, что это необязательно, и нужно его разворачивать, однако, когда я это пробую, Xcode предлагает удалить я!, Поэтому я делаю это, тогда я получаю ошибку подстрочного индекса.Swift 2.0 Проблемы с подзаголовком с помощью словаря
Я смотрел тонны учебников по быстрому развитию, и многие из них использовали игровые площадки, и я никогда не забывал, что кто-то должен сделать это в любом из уроков. Поэтому я попробовал то же самое на игровой площадке, и это сработало.
Вот что я имею в ViewController, который НЕ работает.
var validFields:Dictionary = ["loanBalanceInput":false,"cashOutInput":false,"appraisedValueInput":false,"interestRateInput":false]
func validationSuccess(sender:UITextField){
sender.backgroundColor = green
switch sender {
case loanBalanceInput:
validFields["loanBalanceInput"] = true
break
default:
break
}
}
Что я сделал это создать словарь строк, которые относятся к TextFields и их статус проверки для отслеживания ли они или не были подтверждены. Концепция заключается в том, что когда все в словаре истинно, я могу активировать кнопку расчета.
Однако я получаю «не может индексировать значение словаря типа с индексом типа строки» ошибка ... Однако этот код на детской площадке работает ...
var validatedFields:Dictionary = ["loanBalanceInput":false,"cashOutInput":false,"appraisedValueInput":false,"interestRateInput":false]
validatedFields["loanBalanceInput"]
validatedFields["loanBalanceInput"] = true
Я не понимаю, что здесь. Это потому, что это необязательно?
@IBOutlet weak var loanBalanceInput: UITextField!
Я не разворачиваю его в своем коммутаторе? Я не пытаюсь получить значение creditBalanceInput, хотя, я просто проверяю, был ли он отправителем.
Обычно декларация словаря требует также типа содержащихся ключей и значений, таких как 'var validFields: Dictionary = ...', но поскольку компилятор может вывести тип, просто удалите аннотацию. – vadian
О, WTF. Я идиот. Я все еще не понимаю, почему он работает на игровых площадках, но это не проблема. Я позволяю ему выводить тип, и это сработало. Благодаря! – Ashapiro75
Если вы хотите добавить свое предложение в качестве ответа, я могу его принять. Спасибо. – Ashapiro75