我尝试在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来自哪里?
答案 0 :(得分:1)
您正在data
中搜索,但是您提供的搜索范围从长度newData.length
的零开始搜索。显然newData
比data
长。更改为NSMakeRange(0u, [data length])
。
答案 1 :(得分:1)
您引用data
,但使用newData
的长度:
NSRange newRange = [data rangeOfData:dataToFind
options:kNilOptions
range:NSMakeRange(0u, [newData length])];
看起来并不正确。