RestKit在上载后创建新对象而不是更新现有对象

时间:2014-12-04 12:42:18

标签: ios core-data mapping restkit

我正在使用RestKit将图片上传到我的后端。不幸的是,在成功上传后,响应未被映射到我在请求中使用的对象。

let imageFile = RKManagedObjectStore.defaultStore().mainQueueManagedObjectContext.insertNewObjectForEntityForName("ImageFile") as ImageFile
let request = RKObjectManager.sharedManager().multipartFormRequestWithObject(imageFile, method: .POST, path: "/api/imageFile/", parameters:nil) { (formData) -> Void in
        formData.appendPartWithFileData(imageFileEntity.data, name: "file", fileName: "image.jpg", mimeType: "image/jpeg")
    }

    let operation = RKObjectManager.sharedManager().managedObjectRequestOperationWithRequest(request, managedObjectContext: RKManagedObjectStore.defaultStore().mainQueueManagedObjectContext, success: { (operation, result) -> Void in
        println("result: \(result)")
        println("imageFileID: \(imageFile.imageFileID)")

        }) { (operation, error) -> Void in

    }
    RKObjectManager.sharedManager().enqueueObjectRequestOperation(operation)

如果我在操作成功后打印出我的imageFile对象,似乎没有应用映射:

<ImageFile: 0x7fe079821f20> (entity: ImageFile; id: 0x7fe079821fc0 <x-coredata:///ImageFile/tC23CCB0E-7CD8-4722-B075-3845B32EF4194> ; data: <fault>)

但是,如果我打印结果,它会显示另一个确实包含映射的ImageFile对象。

"<null>" = "<ImageFile: 0x7ff2f412aaf0> (entity: ImageFile; id: 0xd000000000140000 <x-coredata://53E33858-A003-4331-A28D-56EC7C323AE1/ImageFile/p5> ; data: {\n imageFileID = 25;\n})";

我认为因为我使用RKObjectManager,所以映射应该应用于我在请求中使用的对象而不是正在创建的新对象。我做错了什么?

1 个答案:

答案 0 :(得分:0)

我能够通过将targetObject的{​​{1}}属性设置为RKManagedObjectRequestOperation

来解决问题
imageFile