我在处理从核心数据存储中的BLOB中提取的NSData时,看到了一些引用NSRangeException的日志。
*** Terminating app due to uncaught exception \'NSRangeException\', reason: \'*** -[__NSCFData subdataWithRange:]: range {1931, 69114} exceeds data length 65342\'
blob本身是一个使用带有可变长度字段的标头解析的文件。非常奇怪的部分是虽然范围变化表明有问题的文件不同,但每个日志都有相同的长度报告,正好是65342。
我知道我可以简单地设置一个可以解决崩溃的检查,但我更关心导致它的原因。
有什么想法吗?
编辑:插入代码如下
self.operation = [[WickrAPIClient sharedClient] HTTPRequestOperationWithRequest:[self configureRequest] success:^(AFHTTPRequestOperation *operation, id responseObject){
[self.bgContext performBlock:^{
My_Blob *newBlob = [NSEntityDescription insertNewObjectForEntityForName:@"My_Blob" inManagedObjectContext:self.bgContext];
newBlob.data = (NSData *)responseObject;
[self.bgContext save:nil];
NSManagedObjectID *blobID = newBlob.objectID;
[self.bgContext refreshObject:newBlob mergeChanges:NO];
[self.mainContext performBlock:^{
[self.mainContext save:nil];
My_Blob *mainBlob = [self.mainContext getObjectWithID:blobID];
[self.mainContext refreshObject:newBlob mergeChanges:NO];
}];
}
}failure:^(AFHTTPRequestOperation *operation, NSError *error) {
[self processFailureWithError:error];
}];