Невозможно получить строковые переменные из текстового поля для передачи в функцию кнопки почты - PullRequest
0 голосов
/ 27 июня 2018

У меня есть приложение, которое позволяет пользователю вводить свои контактные данные, и оно отправляет почту на мой адрес электронной почты с информацией, которую они помещают в текстовые поля. Кажется, все работает, и я могу отправить письмо с нужным текстом, однако я не могу ввести информацию из текстового поля. Пожалуйста помоги! Я новичок в этом:)

var name: String?
@IBOutlet weak var nameField: UITextField!

var contact: String?
@IBOutlet weak var contactField: UITextField!

var other: String = "nothing"
@IBOutlet weak var otherField: UITextField!


@IBAction func sendEmail(_ sender: Any) {

    let name = nameField.text

    let contact = contactField.text

    if other == nil {

    }else{
        let other = otherField.text!
    }

Когда я нажимаю на кнопку, она запускает почтовое приложение с информацией в теле. Вот код:

func configureMailController() -> MFMailComposeViewController {
    let mailComposerVC = MFMailComposeViewController()
    mailComposerVC.mailComposeDelegate = self

    mailComposerVC.setToRecipients(["email@gmail.com"])
    mailComposerVC.setSubject("Contact information")
    mailComposerVC.setMessageBody("Another Friend! \nMy name or business is: \(name) \nMy contact information is: \(contact) \nMy additional information includes: \(other)", isHTML: false)

    return mailComposerVC
}

Вот вывод в теле почтового приложения (даже когда я пишу вещи в текстовом поле):

"Другой друг!

Меня зовут или бизнес: ноль

Моя контактная информация: ноль

Моя дополнительная информация включает в себя: ничего "

EDIT:

Я изменил мою функцию sendMail, чтобы просто содержать названия розеток:

func configureMailController() -> MFMailComposeViewController {
    let mailComposerVC = MFMailComposeViewController()
    mailComposerVC.mailComposeDelegate = self

    mailComposerVC.setToRecipients(["danielgannage@gmail.com"])
    mailComposerVC.setSubject("Staples Day")
    mailComposerVC.setMessageBody("Another Friend! \nMy name or business is: \(nameField.text) \nMy contact information is: \(contactField.text) \nMy additional information includes: \(otherField.text)", isHTML: false)

    return mailComposerVC
}

А теперь мой вывод содержит информацию о текстовом поле:

"Другой друг!

Мое имя или название компании: Необязательно ("что бы я ни указывал в текстовом поле")

Моя контактная информация: Не обязательна («что бы я ни указывал в текстовом поле»)

Моя дополнительная информация включает в себя: Необязательно («все, что я положил в текстовое поле») «

Но как мне избавиться от: Optional(""), окружающего мою строку?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Обучение работе с необязательными переменными является неотъемлемой частью обучения Swift. Есть несколько способов сделать то, что вы пытаетесь сделать. Если с вами все в порядке, если некоторые из этих полей остаются без ответа, вы можете использовать оператор объединения нулей, чтобы установить значение по умолчанию. Например:

let name = nameField.text ?? "unknown"

С другой стороны, если без ответа ничего не получится, вы можете принять меры против этого случая:

guard let contact = contactField.text else { 
    // display missing info error 
    return
}

Это завершит функцию, а не вызовет почтовый клиент.

0 голосов
/ 27 июня 2018

просто добавь! в конце как let contact = contactField.text!

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