Проверете дали текстово поле от колекция от UITextFields е празно

В момента имам колекция от UITextFields, свързана от IB към моя Swift код. Потребителят има опция да докосне бутон, за да премине към следващия изглед, но моето приложение изисква всички полета да бъдат попълнени. По-долу е моят метод, който проверява дали текстово поле е празно:

func findEmptyField() -> UITextField? {
        for field in fieldsCollection {
            if field.text.isEmpty {
                return field
            }
        }
        //Return here a value signifying that no fields are empty.
    }

Този метод е само частично внедрен, тъй като не съм сигурен как и какво да върна, ако никой от тях не е празен. Извикващият тази функция проверява върнатата стойност и изпълнява действие в зависимост от това дали връща поле или не. Смътно разбирам, че опционалната функция на Swift може да помогне с това, но не съм сигурен как.

Какво трябва да накарам fn да върне, така че повикващият да разпознае, че нито едно от полетата от колекцията не е празно?


person Satre    schedule 17.11.2014    source източник
comment
имате ли масив от текстови полета??   -  person Saurabh Prajapati    schedule 17.11.2014
comment
Трябва (и можете само) да върнете nil в този случай.   -  person Brian Nickel♦    schedule 17.11.2014
comment
fieldsCollection е масив, да   -  person Satre    schedule 17.11.2014


Отговори (1)


Настроили сте го перфектно -- тъй като вече връщате незадължителен UITextField?, ако няма празни текстови полета, върнете nil:

func findEmptyField() -> UITextField? {
    for field in fieldsCollection {
        if field.text.isEmpty {
            return field
        }
    }
    return nil
}

Когато го извиквате, имайте предвид, че ще получите обратно незадължителна стойност. Разопаковайте го с незадължително обвързване:

if let emptyField = findEmptyField() {
    // focus emptyField or give a message
} else {
    // all fields filled, ok to continue
}
person Nate Cook    schedule 17.11.2014