创建NSRange时出现Objective-C错误消息

时间:2014-08-28 12:46:36

标签: objective-c nsrange

我尝试在Mac上的Objective-C中创建一个NSRange对象。不幸的是,它给了我一个我无法解决或调试的错误消息。

NSRange newRange = [data rangeOfData:dataToFind
                                      options:kNilOptions
                                        range:NSMakeRange(0u, [newData length])];

我得到的错误信息是:

*** -[NSConcreteData rangeOfData:options:range:]: range {0, 81701012} exceeds data length 347124

dataToFind的大小是:57854 newData的大小是:81701012

最大NSRange长度的大小默认为NSUInteger:18446744073709551615

那么错误信息是什么? 347124来自哪里?

2 个答案:

答案 0 :(得分:1)

您正在data中搜索,但是您提供的搜索范围从长度newData.length的零开始搜索。显然newDatadata长。更改为NSMakeRange(0u, [data length])

答案 1 :(得分:1)

您引用data,但使用newData的长度:

NSRange newRange = [data rangeOfData:dataToFind
                                      options:kNilOptions
                                        range:NSMakeRange(0u, [newData length])];

看起来并不正确。