NSRange 到 Range<String.Index> [英] NSRange to Range<String.Index>
本文介绍了NSRange 到 Range<String.Index>的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何在 Swift 中将 NSRange
转换为 Range
?
How can I convert NSRange
to Range<String.Index>
in Swift?
我想使用以下 UITextFieldDelegate
方法:
I want to use the following UITextFieldDelegate
method:
func textField(textField: UITextField!,
shouldChangeCharactersInRange range: NSRange,
replacementString string: String!) -> Bool {
textField.text.stringByReplacingCharactersInRange(???, withString: string)
推荐答案
replacingCharacters(in: NSRange, with: NSString)
NSString 版本(相对于 Swift String)code> 接受一个 NSRange
,因此一个简单的解决方案是先将 String
转换为 NSString
.Swift 3 和 2 中的委托和替换方法名称略有不同,因此取决于您使用的是哪种 Swift:
The NSString
version (as opposed to Swift String) of replacingCharacters(in: NSRange, with: NSString)
accepts an NSRange
, so one simple solution is to convert String
to NSString
first. The delegate and replacement method names are slightly different in Swift 3 and 2, so depending on which Swift you're using:
func textField(_ textField: UITextField,
shouldChangeCharactersIn range: NSRange,
replacementString string: String) -> Bool {
let nsString = textField.text as NSString?
let newString = nsString?.replacingCharacters(in: range, with: string)
}
斯威夫特 2.x
func textField(textField: UITextField,
shouldChangeCharactersInRange range: NSRange,
replacementString string: String) -> Bool {
let nsString = textField.text as NSString?
let newString = nsString?.stringByReplacingCharactersInRange(range, withString: string)
}
这篇关于NSRange 到 Range<String.Index>的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文