Swift 将Core数据对象发送到post api Alamofire multipartFormData
我在我的应用程序上有一个屏幕,可以获取一些字段并按对象顺序保存。这个对象是我的核心数据对象。保存后,我需要通过Alamofire POST multipartFormData将其发送到后端。 问题是这是一个核心数据对象(不可编码),我需要在multipartFormData上发送数据类型。如何将对象转换为数据?还有别的方法吗 我所做的:Swift 将Core数据对象发送到post api Alamofire multipartFormData,swift,core-data,alamofire,multipartform-data,Swift,Core Data,Alamofire,Multipartform Data,我在我的应用程序上有一个屏幕,可以获取一些字段并按对象顺序保存。这个对象是我的核心数据对象。保存后,我需要通过Alamofire POST multipartFormData将其发送到后端。 问题是这是一个核心数据对象(不可编码),我需要在multipartFormData上发送数据类型。如何将对象转换为数据?还有别的方法吗 我所做的: let order = Order(context: DatabaseController.getContext()) order.orderItem = or
let order = Order(context: DatabaseController.getContext())
order.orderItem = orderItem
order.product = product
order.value = value
order.date = date
阿拉莫菲尔部分:
Alamofire.upload (
multipartFormData: { multipartFormData in
multipartFormData.append(order, withName: "order")
},
to: url,
headers: headers,
encodingCompletion: { encodingResult in
问题是如何将我的对象顺序放入multipartFormData中?
谁能帮我一下吗
更新:
好的,发送整个对象不起作用,我的api不接受,所以我只使用所需的字段创建了一个特定的json,并将其转换为数据类型:
(注:文件是用户选择的图像的数据类型,即使是从相机或画廊)
我现在的问题是,我的api需要一个zip文件,其中包含用户从相机或画廊拍摄的图像。所以我试着使用。我仍然不知道如何把它拉上拉链并发送出去。我应该将每张图片压缩为数据类型吗?然后将zip文件转换为数据类型,这样我就可以通过multipartFormData.append
我已经试过了:这里的代码是作为NSManagedObject的扩展,它从属性名创建字典
extension NSManagedObject {
func toData() -> Data? {
let keys = Array(self.entity.attributesByName.keys)
let dict = self.dictionaryWithValues(forKeys: keys)
do {
let jsonData = try JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted)
return jsonData
}
catch{}
return nil
}
}
用法:
let jsonData = order.toData()
multipartFormData.append(jsonData, withName: "order")
好的,你的解决方案有效。但我的逻辑是错误的。我需要发送一个图像包和这个订单对象。我该怎么做?当我使用Alamofire.request时,我可以将“参数”作为json对象发送。但是发送一个我应该使用上传的图像包,对吗?所以我没有参数。因为我还需要发送一些图像。您能帮忙吗?您能用详细信息和您的服务器重新启动PI功能更新您的问题吗(您希望收到什么)?我会尽力帮助你,你有权访问服务器上api方法的源代码吗?你能把它贴出来吗?在这种情况下,您的api确切的期望是什么就很清楚了
extension NSManagedObject {
func toData() -> Data? {
let keys = Array(self.entity.attributesByName.keys)
let dict = self.dictionaryWithValues(forKeys: keys)
do {
let jsonData = try JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted)
return jsonData
}
catch{}
return nil
}
}
let jsonData = order.toData()
multipartFormData.append(jsonData, withName: "order")