假设我在NSString“foo”上传递了(位置:5,长度:50)的NSRange,该范围显然不存在。

例如,有没有办法说出[string rangeExists:NSRange],还是我们必须手动验证输入?

最佳答案

您必须编写自己的支票,但这很简单:

NSString *str = ... // some string
NSRange range = ... // some range to be used on str

if (range.location != NSNotFound && range.location + range.length <= str.length) {
    // It's safe to use range on str
}

您可以在NSString上创建类别方法,以添加建议的rangeExists:方法。只是:
- (BOOL)rangeExists:(NSRange)range {
    return range.location != NSNotFound && range.location + range.length <= self.length;
}

关于ios - 有没有一种简单的方法可以检查传递给NSString上的substringWithRange的NSRange是否存在(以免引起错误)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34190233/

10-11 21:23