如何将文件Blob转换为NSData?

我在将Web Blob从Web服务转换为NSData对象时遇到问题。 文件Blob可以是任何类型的文件。 我可以通过RestKit从Web服务器请求文件并获得以下响应:

[{ "FileBlob": [ 65, 108, 108, 111, 99, 46, 32, 83, /* more integer values omitted */ ], "FileID": 1234567890, "FileName": "name.txt" }] 

我通过JSONKit将响应转换为字典NSDictionary *dict = [[response bodyAsString] objectFromJSONString]; 哪个工作正常。 但我无法弄清楚如何将FileBlob转换为NSData对象,以便我可以将其作为文件写入HDD。 如果像上面的例子中的txt-File,我可以通过数组并将所有整数值转换为字符

 NSMutableString *fileString = [NSMutableString string]; for (NSNumber *value in [[dict valueForKey:@"FileBlob"] objectAtIndex:0]) { [fileString appendFormat:@"%c", (char)value.integerValue]; } 

然后将所有内容保存到磁盘

 NSData *data = [fileString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *file = [[paths objectAtIndex:0] stringByAppendingPathComponent:filename]; [[NSFileManager defaultManager] createFileAtPath:file contents:data attributes:nil]; 

但是如果文件是像pdf这样的东西,这不起作用。 有什么我可以做的,将文件Blob转换为NSData对象或其他任何东西将blob作为文件写入光盘?

改为使用NSMutableData :

 NSMutableData *data = [NSMutableData dataWithCapacity:blobs.count]; for (NSNumber *number in blobs) { uint8_t byte = (uint8_t)[number intValue]; [data appendBytes:&byte length:1]; } // write data to file