Я пытался выяснить это целый день и безуспешно.То, что я пытаюсь сделать, это извлечь выбранные значения из строки множественного выбора.Строка до сих пор полностью функционирует, и я смог настроить ее так, чтобы мои варианты были структурированными.
Проблема у меня к концу, когда мне нужно получить данные из формы.Я могу использовать form.values()
и по большей части знаю, как работать со словарем.
Когда я вызываю значения в многорядной строке, они обозначаются как «Наборы».Я все еще относительно новичок в Swift, поэтому раньше я с ними не сталкивался, но из того, что я до сих пор читал, они являются типами коллекций, такими как массивы?
это та часть, которая вызывает у меня проблемы:
//
<<< ButtonRow("btnnRow") { row in
row.title = "Confirm selection."
row.onCellSelection({ (cell, row) in
let formValues = self.form.values()
let koko = formValues["multiSelectTest"] as! Set<MultiTestStruct>
switch koko.isEmpty {
case true:
print("Set is empty")
case false:
print("Set is NOT empty!")
}
})
}
Это последняя итерация того, что я пытался сделать.Он может печатать «пустой» при первой загрузке, но как только я выберу опцию и снова откажусь от нее, произойдет сбой!
Я думаю, что у меня возникают проблемы после выделения, потому что, когда я печатаю все значения, это изначально "multiSelectTest": nil
, но после выбора в Многорядной строке, а затем отмены выбора, это то, что превращается в: "multiSelectTest": Optional(Set([]))
.
Извините, если это не имеет смысла, я был бы рад объяснить дополнительно, если это необходимо, сейчас 2 часа ночи, и мой мозг довольно измотан!
TL: DR - Как получитьзначения из строки множественного выбора.
Спасибо за чтение.
Обновление: сообщение об ошибке- Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
- Я получаю эту ошибку, если пытаюсь получить значение строки перед выбором и отменой выбора.Как только выбор был переключен, проблема не возникает.
Это консольный вывод всех значений до выбора:
["btnRow": nil, "btnRow2": nil, "multiSelectTest": nil]
Это консольный вывод после выбора параметра:
["btnRow": nil, "btnRow2": nil, "multiSelectTest": Optional(Set([theDD_Admin.MultiTestStruct(name: "HELLO!")]))]
И, наконец,, это после того, как я очистил многорядную строку всех опций:
["btnRow": nil, "btnRow2": nil, "multiSelectTest": Optional(Set([]))]
Мой основной план действий состоял в том, чтобы вызвать многострочные значения, если multi было nil
, но, как вы можете видетьэто только ноль, пока нетронутый.Сделав опцию даже невыбранной, она превращается в набор, и я теряюсь оттуда.
спасибо