Похоже, вы не поняли addTextField(configurationHandler:)
согласно документам
Блок для настройки текстового поля перед отображением предупреждения. Этот блок не имеет возвращаемого значения и принимает один параметр, соответствующий объекту текстового поля. Используйте этот параметр для изменения свойств текстового поля.
Ссылка: https://developer.apple.com/documentation/uikit/uialertcontroller/1620093-addtextfield
Вы ожидаете, что у self.contact
объекта name
и surname
обновляется внутри блока конфигурации, но этого никогда не произойдет. Это закрытие / блок предназначен только для настройки текстового поля, а не для захвата ввода пользователя.
Внутри этого замыкания вы можете изменить свойство textFields, например заполнитель, цвет фона, рамку и т. Д. 1024 * и c, чтобы настроить его перед отображением. Но если вы хотите захватить пользовательский ввод, используйте закрытие действий.
Скорее
alert.addAction(UIAlertAction(title: "Add", style: .default, handler: { (action) in
if let name = alert.textFields?.first?.text,
(alert.textFields?.count ?? 0) >= 1,
let surname = alert.textFields?[1].text {
self.contact.name = name
self.contact.surname = surname
self.allContacts.append(self.contact)
}
}))
Надеюсь, это поможет