Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 将Core数据对象发送到post api Alamofire multipartFormData_Swift_Core Data_Alamofire_Multipartform Data - Fatal编程技术网

Swift 将Core数据对象发送到post api Alamofire 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

我在我的应用程序上有一个屏幕,可以获取一些字段并按对象顺序保存。这个对象是我的核心数据对象。保存后,我需要通过Alamofire POST multipartFormData将其发送到后端。 问题是这是一个核心数据对象(不可编码),我需要在multipartFormData上发送数据类型。如何将对象转换为数据?还有别的方法吗

我所做的:

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")