Проблемы с получением значений из строки множественного выбора - PullRequest
0 голосов
/ 19 марта 2019

Я пытался выяснить это целый день и безуспешно.То, что я пытаюсь сделать, это извлечь выбранные значения из строки множественного выбора.Строка до сих пор полностью функционирует, и я смог настроить ее так, чтобы мои варианты были структурированными.

Проблема у меня к концу, когда мне нужно получить данные из формы.Я могу использовать 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, но, как вы можете видетьэто только ноль, пока нетронутый.Сделав опцию даже невыбранной, она превращается в набор, и я теряюсь оттуда.

спасибо

1 Ответ

0 голосов
/ 19 марта 2019

Из комментария @ koropok, это то, что мне удалось придумать. В многорядной строке я установил поведение .onChange -

row.onChange({ (row) in
                if row.value?.isEmpty == true {
                    // if row Set<> is empty then this row will be cleared and set to nil
                    self.form.setValues(["multiSelectTest" : nil])
                }
            })

Я столкнулся с ошибкой при попытке сделать row.value = nil, и этот способ работает, как предполагалось.

Это то, что я придумал и до сих пор хорошо работает для меня. Для тех, у кого больше опыта, чем у меня, это правильный / лучший подход? Хотелось бы знать, будет ли кто-нибудь делать что-то по-другому.

Еще раз спасибо!

...