2014-07-20 35 views
3

我有這樣的代碼在Objective-C:stringByReplacingCharactersInRange如何在swift中工作?

[textField.text stringByReplacingCharactersInRange:range withString:string]; 

嘗試轉換爲迅速,像這樣:

textField.text.stringByReplacingCharactersInRange(range, withString: string) 

但是編譯器說,Int is not identical to 'String.index'

我應該如何修改體現在哪裏?

我同時使用的Objective-C/SWIFT表達的UITextFieldDelegate方法:

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

enter image description here

+0

你是如何定義'range',在這兩種情況下? – Undo

+0

兩者都有NSRange類型 –

+0

我得到了一個不同的錯誤消息,有關的範圍,而不是字符串,就像其他線程 –

回答

1

使用bridgeToObjectiveC()

textField.text.bridgeToObjectiveC().stringByReplacingCharactersInRange(range, withString: string) 

將更加明確

var st = "abc" 
str.bridgeToObjectiveC().stringByReplacingCharactersInRange(NSMakeRange(2,1), withString:"r") 

顯式轉換也可以做NSString,它不是需要bridgeToObjectiveC

var st = "abc" as NSString 
let abc = st.stringByReplacingCharactersInRange(NSMakeRange(2, 3), withString: "abc") 
+0

我得到同樣的錯誤與NSMakeRange –

+0

有你'進口Foundation' – codester

+0

我已經測試過,並沒有'進口Foundation'工作正常,也 – codester

相關問題