将byte []转换为NSData后数据损坏

Mat*_*oit 2 pdf json bytearray nsdata ios

我有.Net Web服务响应包含byte []条目,以及其他字段.数据是PDF文件.

我从接收到的数据中提取字典:[NSJSONSerialization JSONObjectWithData]

此后我使用以下代码将byte []转换为NSData.然后我将结果保存到磁盘(参见最后一行).

打开生成的PDF文件时,出现以下错误:

"未找到PDF标题:'%PDF'未找到."

        NSArray *byteArray = [rootDictionary objectForKey:@"file"];

        unsigned c = byteArray.count;
        uint8_t *bytes = malloc(sizeof(*bytes) * c);

        unsigned i;
        for (i = 0; i < c; i++)
        {
            NSString *str = [byteArray objectAtIndex:i];
            int byte = [str intValue];
            bytes[i] = (uint8_t)byte;
        }

        NSData* data = [NSData dataWithBytes:(const void *)byteArray length:sizeof(unsigned char)*c];

        //Save to disk using svc class.
        NSString *localPath = [svc saveReport:data ToFile:[rootDictionary objectForKey:@"name"]];
Run Code Online (Sandbox Code Playgroud)

我也尝试将byte []转换为base64 NSString(在服务端),然后返回到我的应用程序中的NSData,其工作(大多数情况下),但我被告知它是邋code的代码.

**当同时异步提取多个PDF时,其中一些作为base64字符串收到的报告也已损坏.

PS.如果我必须提供我的svc课程的代码,请告诉我,但我不认为问题存在.

编辑: 我创建了一个新的Web服务方法,它以byte []作为输入,然后修改我的iOS应用程序将byteArray变量发送回服务,然后将其保存到文件中.生成的PDF文件是Adobe可读的有效文件.这意味着转移期间没有腐败.

谢谢!

Mat*_*oit 5

好吧,最后在精心梳理我的代码之后对其进行了整理(受到来自http://www.raywenderlich.com/forums/viewtopic.php?f=2&p=38590#p38590的snadeep.gvn的启发).

我犯了一个愚蠢的错误,我忽略了100多次.

这行代码:

NSData* data = [NSData dataWithBytes:(const void *)byteArray length:sizeof(unsigned char)*c];
Run Code Online (Sandbox Code Playgroud)

应改为:

NSData* data = [NSData dataWithBytes:(const void *)bytes length:sizeof(unsigned char)*c];
Run Code Online (Sandbox Code Playgroud)

美好的时光,现在我终于可以睡个好觉了:-)