3

アプリ内のファイルの最後の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];

これが私が得るエラーです:

**キャッチされなかった例外'NSRangeException'が原因でアプリを終了しています、理由:'***-[NSConcreteData rangeOfData:options:range:]:range {14954、14962} enxceeds data length 14962'

範囲を正しく取得して、最後の数バイトを検索するにはどうすればよいNSDataですか?

4

1 に答える 1

8

の2番目のメンバーはNSRange、範囲の終点ではなく、その長さです。したがって、あなたの場合は次のようになります。

NSRange range = {([imageData length]-8), 8};
于 2012-06-13T11:22:09.913 に答える