2

I try to create an NSRange object in Objective-C on my Mac. Unfortunately it gives me an error message which I cannot solve or debug.

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

The error message I get is:

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

The size of dataToFind is : 57854 The size of newData is : 81701012

The max. size of the NSRange length is by default an NSUInteger : 18446744073709551615

so what is the error message about? Where do the 347124 come from?

rookieOC
  • 47
  • 5

2 Answers2

2

You are searching in data yet you provide the range to search starting from zero of the length newData.length. Apparently newData is longer than data. Change to NSMakeRange(0u, [data length]).

Wojtek Surowka
  • 20,535
  • 4
  • 44
  • 51
2

You are referencing data but using the length of newData:

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

That doesn't look right.

trojanfoe
  • 120,358
  • 21
  • 212
  • 242