Когда вы объявляете функцию в swift, ее параметры по умолчанию имеют константы «let». И мы не можем присваивать значение константам.
В вашем случае вы пытаетесь присвоить переменной «error», которая является параметром, следовательно, константой (let). Вы не можете сделать это.
Вы можете вернуть сообщение об ошибке
class SingUpError {
func errorMessage(name: String?, lastName: String?,email: String?, password: String?) -> String{
enum ErrorMessage: String {
case noName = "Name cannot be empty"
case noLastName = "Last name cannot be empty"
case noEmail = "Email cannot be empty"
case noPassword = "Password cannot be empty"
}
if name == "" {
return ErrorMessage.noName.rawValue
}
return ""
}
}
Ссылки в текстовых представлениях являются интерактивными, только если текстовое представление выбирается, но не редактируется.
set editable false & amp; selectable true:
text.isEditable = false
text.isSelectable = true
Чтобы получить выделенный текст из textview, который является ключевым в вашем случае, используйте следующую функцию:
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool {
if let key = textView.text.substring(with: characterRange){
if let value = dictionary[String(key)]{
print("text :",value)
alert(value: value)
}
}
return false
}
Использование расширения для строки, чтобы получить подстроку с диапазоном:
extension String {
func substring(with nsrange: NSRange) -> Substring? {
guard let range = Range(nsrange, in: self) else { return nil }
return self[range]
}
}
Вы можете сделать это, создав расширение для повторного использования в следующий раз, как показано ниже:
extension UITextView{
func textRangeFromNSRange(range:NSRange)->String{
let myNSString = self.text as NSString
return myNSString.substring(with: range)
}
}
Использование:
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool {
if (URL.absoluteString == kURLString) {
alert(value: textView.textRangeFromNSRange(range: characterRange))
}
return false
}
[ 116] Если вы хотите получить значение из своего словаря, вы можете сделать это следующим образом:
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool {
if (URL.absoluteString == kURLString) {
alert(value: dictionary[textView.textRangeFromNSRange(range: characterRange)]!)
}
return false
}
Отметил: убедитесь, что ссылки в textViews выбираются, но не редактируются .