如果超出范围,shouldChangeTextIn终止,如何保护/检查是否超出范围

时间:2018-03-24 10:10:13

标签: swift nsstring core-text

我正在使用 -

shouldChangeTextIn range: NSRange  -

在我输入时更改3个标签中的文字。 如果我在文本仍在更新时快速从标签更改为标签2,则会出现以下错误导致崩溃

是否有检查我可以放入函数以确保我在范围内或索引存在?

2018-03-24 09:51:05.024557+0000 textinput3[24714:952788] ***     

Terminating app due to uncaught exception 'NSRangeException', reason: 
'-    [__NSCFString replaceCharactersInRange:withString:]: Range or     
index out of bounds'

这是功能。

    func textView(_ textField: UITextView, shouldChangeTextIn range: NSRange, replacementText string: String) -> Bool {
    if field?.tag == 1 {
        updatedText = ((field?.text as NSString?)?.replacingCharacters(in: range, with: string))!
    }
    if field?.tag == 2 {
        updatedTitleText = ((field?.text as NSString?)?.replacingCharacters(in: range, with: string))!

    }
    if field?.tag == 3 {            
        updatedCaptionText = ((field?.text as NSString?)?.replacingCharacters(in: range, with: string))!

    }

    return true
}

(键入字符和出现的字符之间存在轻微的延迟,因此如果在前一个标签仍在更新时更改为其他标签,则会发生崩溃)

0 个答案:

没有答案