Необязательно ("") сохраняется в базе данных - PullRequest
0 голосов
/ 17 октября 2018

В Swift 4.2 у меня есть следующий метод

cell.onPartNumberTapped = { [weak self] in
            let alert = UIAlertController(title: "Enter New Part Number", message: "", preferredStyle: .alert)

        alert.addTextField { (textField) in
            textField.placeholder = "Add/Edit Part Number"
            textField.text = ""
        }

        let action = UIAlertAction(title: "Submit", style: .default) { (action) in
            let textField = alert.textFields![0]

            let parameters = [
                "id": component.id,
                "part_number": textField.text as Any
                ] as [String : Any];

            Alamofire.request(global.API_URL + "components/edit_pn", method: .post, parameters: parameters as Parameters ).responseJSON { [weak self]
                response in

                if response.result.isSuccess {
                    //
                } else {
                    self?.showMessage(messageToDisplay: "Unable to connect to service.")
                } // end if
            }
        }

        alert.addAction(action)

        self?.present(alert, animated: true, completion: nil)
    }

Значение, сохраняемое после вызова AJAX:

Optional("S65-5366-2L-1X")

Нормально ли использовать регулярное выражение в бэкэндеудалить это или я что-то упустил в методе?

1 Ответ

0 голосов
/ 17 октября 2018

Преобразование словаря с помощью parameters as Parameters преобразует необязательное значение textField.text в строку Optional("whatever was in the text field").Чтобы избежать этого, преобразуйте необязательное значение в необязательное, например так:

let parameters = [
    "id": component.id,
    "part_number": textField.text ?? "" // if nil use the empty string, otherwise unwrap
] as [String : Any];

Обратите внимание, что ваш клиент, вероятно, должен информировать пользователя о пустом текстовом поле вместо использования значения по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...