2012-03-04 12 views
2

WebサービスからFileBlobをNSDataオブジェクトに変換する際に問題があります。 File Blobには、任意のタイプのファイルを使用できます。私は正常に動作JSONKit NSDictionary *dict = [[response bodyAsString] objectFromJSONString];経由辞書へのレスポンスを変換ファイルBlobをNSDataに変換するには?

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

:私はRestKitを経由してWebサーバーからファイルを要求すると、次の応答を得ることができます。しかし、私はFileBlobをNSData Objectに変換する方法を理解することができないので、ファイルとしてHDDに書き込むことができます。ファイルがある場合、私は、配列の谷に行くと変換することができます上記の例のように、TXT-ファイルの場合、すべての整数値は

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のようなものはこれでうまくいきません。 File BlobをNSData Objectまたは他の何かに変換してBLOBをファイルとしてディスクに書き込むことができるのですか?

答えて

0

使用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 
+0

うわー、あなたの助けをありがとうございました。あなたの提案は完全に機能します。 – lahmar

関連する問題