0

我有这个代码

NSString *nextSequentialFile =
    [filePath stringByReplacingOccurrencesOfString:photoNumber
    withString:[NSString stringWithFormat:@"%d", (index + 1)]
    options:NSBackwardsSearch
    range:[filePath rangeOfString:photoNumber options:NSBackwardsSearch]];

但我有这个错误,我不明白因为它发生了。

Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSCFString replaceOccurrencesOfString:withString:options:range:]: Range or index out of bounds'
4

3 回答 3

1

尝试:

NSString *nextSequentialFile =
[filePath stringByReplacingOccurrencesOfString:photoNumber
withString:[NSString stringWithFormat:@"%d", (index + 1)]
options:NSBackwardsSearch
range:NSMakeRange(0, filePath.length)];
于 2011-10-14T16:06:02.700 回答
0

很可能rangeOfString:photoNumber超出范围。我建议记录您传递给此方法的每个值,以便判断哪个有问题。

于 2011-10-14T16:01:22.577 回答
0

永远不要假设诸如rangeOfString:options:返回有效范围之类的方法。从文档:

返回值

一个 NSRange 结构,给出第一次出现的 aString 在接收器中的位置和长度,以掩码中的选项为模。如果 aString 未找到或为空 (@""),则返回 {NSNotFound, 0}。

[强调补充]

NSNotFound因此,首先获取范围并在尝试使用它之前进行检查。

于 2011-10-14T17:09:39.137 回答