gpt4 book ai didi

ios - NSRange 崩溃的应用程序

转载 作者:行者123 更新时间:2023-11-28 19:17:39 29 4
gpt4 key购买 nike

我的 NSRange 有一个问题,导致我的应用程序在 textview 为空时崩溃。我使用的是自定义键盘,上面有一个退格键,它在此处调用此代码...

if ([self.myChart isFirstResponder]) {
NSRange currentRange = myChart.selectedRange;
if (currentRange.length == 0) {
currentRange.location--;
currentRange.length++;
}
myChart.text = [myChart.text stringByReplacingCharactersInRange:currentRange withString:[NSString string]];
currentRange.length = 0;
myChart.selectedRange = currentRange;

NSLog(@"%d", NSNotFound);
}

如果我在 textview 中有文本,这非常适合一次删除一个字符,但是当我到达 textview 的开头并且没有更多字符时,我会遇到异常并崩溃...

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

我的目标是停止退格功能。我明白为什么它会崩溃,但我不知道如何解决它。我试过用 NSNotFound 对它进行评估,但运气不佳。

任何想法将不胜感激!

最佳答案

您应该检查字段中是否有文本,即:

if ( myChart.text.length > 0 )

并检查以确保您没有尝试访问位置 -1:

if ( currentRange.location >= 0 )

所以你的代码看起来像

if ([self.myChart isFirstResponder] && myChart.text.length > 0 ) {
NSRange currentRange = myChart.selectedRange;
if (currentRange.length == 0) {
currentRange.location--;
currentRange.length++;
}
if ( currentRange.location >= 0 )
{
myChart.text = [myChart.text stringByReplacingCharactersInRange:currentRange withString:[NSString string]];
currentRange.length = 0;
myChart.selectedRange = currentRange;

NSLog(@"%d", NSNotFound);
}
}

关于ios - NSRange 崩溃的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11212371/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com