cuốn sách gpt4 ai đã làm

ios - NSRange 崩溃的应用程序

In lại Tác giả: Walker 123 更新时间:2023-11-28 19:17:39 29 4
mua khóa gpt4 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 对它进行评估,但运气不佳。

任何想法将不胜感激!

câu trả lời hay nhất

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

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
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress