将字节值放入NSDictionary [iOS]

P.J*_*P.J 3 iphone image bytearray objective-c ios

我有一个帖子Web服务,我需要在字节数组中发送图像,因为我需要以JSON格式发送post参数,我已经创建了它NSDictionary.我的问题是如何将对象分配给字典中的键Byte,我尝试这样做,应用程序在创建时崩溃NSDictionary.我也用代码解释每个步骤,以便于理解下面的问题: -

这是我将图像转换为字节格式的代码: -

NSData *data = [NSData dataWithContentsOfFile:filePath];
NSUInteger len = [data bytes];
Byte *byteData = (Byte*)malloc(len);
memcpy(byteData, [data bytes], len);
Run Code Online (Sandbox Code Playgroud)

所以,现在我Byte在字节数组中包含图像,现在我想将此对象分配给NSDictionary.这是代码,

NSDictionary *dictJson = [NSDictionary dictionaryWithObjectsAndKeys:
byteData, @"photo",
nil];
Run Code Online (Sandbox Code Playgroud)

现在我的应用程序崩溃在我正在创建dictJson对象的上面一行,有什么方法可以将Byte传递给它NSDictionary

另外,另一个问题,我该怎么NSLog byteData办?

请帮我.

提前致谢!

Mar*_*n R 5

如果你真的想将图像数据作为包含字节作为数字的JSON数组发送,那么你必须"手动"创建数组,没有内置函数:

NSData *data = ... // your image data
const unsigned char *bytes = [data bytes]; // no need to copy the data
NSUInteger length = [data length];
NSMutableArray *byteArray = [NSMutableArray array];
for (NSUInteger i = 0; i < length; i++) {
    [byteArray addObject:[NSNumber numberWithUnsignedChar:bytes[i]]];
}
NSDictionary *dictJson = [NSDictionary dictionaryWithObjectsAndKeys:
              byteArray, @"photo",
              nil];
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictJson options:0 error:NULL];
Run Code Online (Sandbox Code Playgroud)

然后JSON数据看起来像

{"photo":[byte0, byte1, byte2, ...]}
Run Code Online (Sandbox Code Playgroud)

所以也许这就是服务器所期望的.但请注意,这是一种非常无效的(在空间方面)发送图像数据的方式(例如与Base64相比).