如何使用不同的主键属性更新 RestKit 中的已发布对象?

Posted

技术标签:

【中文标题】如何使用不同的主键属性更新 RestKit 中的已发布对象?【英文标题】:How to update a posted object in RestKit with different primary key attributes? 【发布时间】:2012-05-17 13:28:11 【问题描述】:

我将对象作为 JSON 发布在服务器上,该 JSON 由一些属性和一个作为主键属性的 ID 组成。我也在使用 Core Data 将所有对象保存在本地。

问题是,当我第一次创建 POST 对象时,我知道除了唯一 ID 之外的所有属性。 ID 是在服务器端设置的,当我从服务器获得响应时,我的数据库中有两个对象: 一个 ID 为 0,一个为真实 ID。

有没有办法让restkit/coredata把这两个对象当作相同的对象,或者不将第一个对象保存在数据库中?

【问题讨论】:

【参考方案1】:

您可以像这样使用postObject: usingBlock 方法并为对象加载器分配一个目标对象。

[[RKObjectManager sharedManager] postObject:myObject usingBlock:^(RKObjectLoader *loader) 
                loader.targetObject = myObject;
                loader.delegate = self;
                loader.objectMapping = [[RKObjectManager sharedManager].mappingProvider objectMappingForClass:[myObject class]];

请注意,每次运行该方法时,您还必须在代码块中手动设置委托。

【讨论】:

以上是关于如何使用不同的主键属性更新 RestKit 中的已发布对象?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:如何使用位置管理器类的已发布属性更新一个类(ObservableObject)的已发布属性?

EF6:如何在 Select 中包含子属性,以便创建单个实例。避免“相同的主键”错误

数据库主键生成策略

使用唯一随机值更新sql表中的所有行,而不使用c#中的主键或唯一键

在 coredata 和 restkit 本地更新托管对象的属性

Alteryx“更新选项所需的主键”中的雪花插入/更新错误