У меня есть приложение Swift с представлением, в котором есть текстовое поле и кнопка. Когда кнопка нажата, он вызывает метод ниже.Преобразование строки! to String
@IBAction func AddClick(sender: AnyObject) {
employeeManager.AddFirstName(firstName.text)
}
Я не знаю, почему я получаю следующее сообщение об ошибке:
Cannot invoke 'AddFirstName' with an argument list of type '(String!)'
это потому, что я не могу неявно преобразовать тип String!
в String
?
определение добавитьЩелкните:
var employeeManager: EmployeeManager = EmployeeManager()
class EmployeeManager {
func AddFirstName(firstName: String){}
Даже если я изменить код для
func AddFirstName(firstName: String!) {}
он все еще не работает.
Что было бы лучшим способом сделать это?
- EDIT -
Я вижу проблему. Это что-то сделать с помощью следующей строки в классе EmployeeManager:
var employeeManager: EmployeeManager = EmployeeManager()
Если я сделаю это в добавитьЩелкните, он работает:
@IBAction func AddClick(sender: AnyObject) {
var e = EmployeeManager()
e.AddFirstName(firstName.text)
}
Эта линия предназначена действовать как синглтон и обеспечить доступ к окну EmployeeManager. Я сделал это неправильно?
var employeeManager: EmployeeManager = EmployeeManager()
Вы пробовали 'func employeeManager.AddFirstName (firstName: String?)' И проверяете внутри этой функции, если firstName - это строка, а не nil? –
Я не считаю, что определение 'AddFirstName()' похоже. Это должно быть 'func AddFirstName (firstName: String) {' или такое. Вставьте свой фактический код. – rintaro
Пробовал это, но получал ту же ошибку. Это время компиляции, а не ошибка времени выполнения. – 4thSpace