Проверьте, пусто ли текстовое поле из коллекции 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