gpt4 book ai didi

iphone - 如何将File Blob转换为NSData?

转载 作者:行者123 更新时间:2023-12-01 16:58:25 25 4
gpt4 key购买 nike

我在将文件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];将Response转换为Dictionary,效果很好。但是我不知道如何将FileBlob转换为NSData对象,以便可以将其作为文件写入HDD。如果是txt-File(例如上例),我可以遍历数组并将所有整数值转换为chars
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对象,或者将文件作为文件写入磁盘?

最佳答案

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

关于iphone - 如何将File Blob转换为NSData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9556170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com