2014-07-20 14 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

相关问题