2016-02-25 3 views
5

Я реализовал некоторые функциональные возможности TextField в своем приложении, поэтому я использовал делегатов TextField, но он обнаружил некоторую ошибку, например: «Значение типа string не имеет длины члена» Я не знаю, я знаю, как решить это, пожалуйста, помогите мне решить эту проблему.Swift: Значение типа 'string' не имеет длины члена '

Здесь я даю код того, что я пытаюсь.

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 
    var oldLength: Int = textField.text!.characters.count 
    var replacementLength: Int = string.characters.count 
    var rangeLength: Int = range.length 
    var newLength: Int = oldLength - rangeLength + replacementLength 
    if textField.tag == 1 { 
     if string.length > 0 && !NSScanner.scannerWithString(string).scanInt(nil) { **------>//Error was showed in this line.** 
      return false 
     } 
     // This 'tabs' to next field when entering digits 
     if newLength == 5 { 
      if textField == txtOtp4 { 
       textField.resignFirstResponder() 
      } 
     } 
     else if oldLength > 0 && newLength == 0 { 

     } 

     return newLength <= 4 
    } 
    else { 
     if newLength == 11 { 
      if textField == txtPhoneNumber { 
       textField.resignFirstResponder() 
      } 
      return newLength <= 10 
     } 
    } 
    return true 
    // This allows numeric text only, but also backspace for deletes 
} 
+2

Почему вы используете 'string.length' в одной строке, но' string.characters.count' в другом? – luk2302

ответ

13

Заменить

if string.length > 0 

по

if string.characters.count > 0 
+0

Спасибо за ваш ответ @Tim Vermeulen. –

+0

Это работает, но он показывает новые проблемы. –

+0

Каковы ошибки? –

8

Если вы используете Swift 2.0, вы должны использовать

string.characters.count 

, чтобы получить число символов в строке ,

+0

Спасибо @mohonish –

Смежные вопросы