我在向REST Web服务发送UIImage对象时遇到问题 只接受JSON作为输入。 我有我的对象映射全部设置,它可以生成JSON 很好,直到它到达任何UIImages。
我阅读了有关单独加载图片的页面: https://github.com/RestKit/RestKit/wiki/Attach-a-File-to-an-RKObjectLoader 但这总是会将内容类型从application / json更改为 application / xxx-form-url-encoded(或其他任何东西)。
那么在不使用RKParams的情况下实现这一目标的最佳方法是什么?
我在这里找到了另一个链接:https://groups.google.com/forum/#!msg/restkit/QcTPucXXn4o/41IcKDCeoGAJ,它谈到了早期版本的 RestKit,你可以使用 propertiesForSerialization RKObjectMappable 协议,但该协议和方法似乎不再适用 在0.10.0中可用。
新版本中是否有某种方法可以让您更换 具有base64编码数据的UIImage的内容(因此是JSON 安全)在尝试序列化之前?
或者还有其他解决方案吗?任何帮助赞赏。感谢
答案 0 :(得分:2)
我通过保存到“imageData”属性并在base64中对图像进行编码来使用RestKit完成此操作。
这对于CoreData来说并不是很好,所以我编写它以便在从服务器获取图像(在base64中编码)时,它将图像保存到磁盘,然后将路径存储在Core Data中。然后,当将图像推送到服务器时,它会在磁盘上找到该文件,编码为base64,然后将其包含在JSON中。
这不是一个完美的方法,但是如果你不是来回发送图像那么它的效果非常好。
答案 1 :(得分:1)
您是否尝试过使用RKParams并只更改serializationMIMEType?
RKObjectManager* objectManager = [RKObjectManager objectManagerWithBaseURL:baseURL];;
objectManager.serializationMIMEType = RKMIMETypeJSON;
答案 2 :(得分:1)
好吧,我想出了一种方法。
我最终为每个UIImage创建了一个额外的NSString属性,这就是我用来映射而不是实际的UIImage。然后在我postObject之前,我为每个图像生成base64代码并相应地填充NSString属性。
不是最好的方式,仍然很好奇看到其他人想出来的。