2016-11-02 13 views
0

insertspaceInExpiryDateTextField()関数をtextField()関数に呼び出して上記のエラーを取得しようとしています。'Int'型の値を 'UInt'の期待値型に変換できません

//有効期限のテキストフィールドを2桁の後に "/"とする。 Expirey日付フィールドを作る

func insertspaceInExpiryDateTextField(string: String,inout andPreserveCursorPosition cursorPosition: UInt) -> String { 

    var stringWithAddedSpaces: String = "" 
    for index in 0.stride(to: string.characters.count, by: 1) { 
     if index != 0 && index % 2 == 0 { 
      stringWithAddedSpaces += " " 

      if index < Int(cursorPosition) { 
       cursorPosition += 1 
      } 
     } 
     let characterToAdd: Character = Array(string.characters) [index] 
     stringWithAddedSpaces.append(characterToAdd) 
    } 
    return stringWithAddedSpaces 
} 

//この関数に上記の関数を呼び出す //は....また、月と年を分割する2桁の数字の後に「/」を与えるだけで4桁の数字を取ります。

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 



if textField == self.txt_expDate { 

      self.insertspaceInExpiryDateTextField(textField.text!, andPreserveCursorPosition: (&UInt(range.length)))  // Here I get the error 

      txt_expDate.text! = txt_expDate.text!.stringByReplacingOccurrencesOfString(" ", withString: "/", options: NSStringCompareOptions.LiteralSearch, range: nil) 

      return ((txt_expDate.text?.characters.count)! >= 4 && range.length == 0) ? false : true 
     } 
} 

// UIntエラー以外はすべて正常に動作します。

//私もError 'cannot convert value of type 'int' to expected argument type 'UInt'でチェックしませんが、何の使用..

は私が間違っているつもりですいずれかの特定の行がありますか? NSRangeのおかげ おかげ

+0

self.insertspaceInExpiryDateTextField(TextFieldを。 (UInt(range.length)))//ここでエラーが発生する –

答えて

0

lengthプロパティは、スウィフトのintとUINTないとして架設されている(私は考え理由を持っていません。its NSUInteger in Objective C)次のようにあなたは遊び場で確認できます。

print(type(of: NSRange(location: 0, length: 0).length)) 
+0

しかし、コードが機能しない –

+1

「UInt」ではなく「Int」である理由についての混乱に答えるために:スウィフトコンベンションは絶対に否定的なデータであっても、強力な理由がない限り、「Int」を使用することができます。この方法では、さまざまなタイプの整数 – Alexander

関連する問題