搜索NSData末尾附近的字节时出现NSRangeException

Sle*_*lee 3 cocoa-touch objective-c ios nsrange

我想检查我的应用程序中的最后2个字节的文件,以确保它们没有损坏的.jpg

rangeOfData:options:range:看起来是一个不错的选择,但我很难弄清楚如何获得一个合适的选择NSRange.我正在寻找的范围接近结尾NSData,直到结束.

这是我到目前为止:

NSData *imageData = [NSData dataWithContentsOfFile:filePath];
NSRange range = {([imageData length]-8),[imageData length]};
NSString *str = @"FFD9";
NSData *jpgTest = [str dataUsingEncoding:NSUTF8StringEncoding];
NSRange found = [imageData rangeOfData:jpgTest options:NSDataSearchBackwards range:range];
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

**由于未捕获的异常'NSRangeException'而终止应用程序,原因:'*** - [NSConcreteData rangeOfData:options:range:]:range {14954,14962} enxceeds data length 14962'

如何正确获取范围以搜索我的最后几个字节NSData

Ole*_*ann 8

第二个成员NSRange不是范围的终点,而是它的长度.所以在你的情况下它应该是:

NSRange range = {([imageData length]-8), 8};
Run Code Online (Sandbox Code Playgroud)