如何在 RestKit 0.20 中实现`hasOne:withMapping:`?

     2023-02-23     146

关键词:

【中文标题】如何在 RestKit 0.20 中实现`hasOne:withMapping:`?【英文标题】:How to achieve `hasOne:withMapping:` in RestKit 0.20? 【发布时间】:2013-10-21 22:29:13 【问题描述】:

我有一个用于排序项目的 JSON 数据结构


    "id": "8a1a39479d03d959", 
    "sortOrder": 3, 
    "timestamp": 1381669499.11, 

和另一个只有一个项目的文件结构:


    "id": "d88e3c3d1630db4c", 
    "item": "8a1a39479d03d959", 
    "timestamp": 1381669505.364, 
    "version": 2

我一直在努力使这种映射起作用,以至于我将[files] 列表添加到项目 JSON 中只是为了映射关系。但是,阅读较早的post on the Google group,我发现它应该可以像这样映射这些关系(未经测试的代码,只是解释上面的链接):

RKManagedObjectMapping *itemMapping = [RKManagedObjectMapping mappingForClass:[Item class]];
itemMapping.primaryKeyAttribute = @"itemID";
[itemMapping mapKeyPath:@"sortOrder" toAttribute:@"sortOrder"];
[itemMapping mapKeyPath:@"id" toAttribute:@"itemID"];

RKManagedObjectMapping *fileMapping = [RKManagedObjectMapping mappingForClass:[File class]];
fileMapping.primaryKeyAttribute = @"fileID";
[fileMapping mapKeyPath:@"id" toAttribute:@"fileID"];
[fileMapping mapKeyPath:@"item" toAttribute:@"itemID"];
[fileMapping mapKeyPath:@"version" toAttribute:@"version"];

[fileMapping hasOne:@"item" withMapping:itemMapping];
[fileMapping connectRelationship:@"organization" withObjectForPrimaryKeyAttribute:@"itemID"];

但是 hasOne:withMapping: 在 RestKit 0.20 中不再存在。如今,将一对多关系映射到 JSON 中作为简单字符串返回的 id 的正确方法是什么?仅供参考,我在这个项目中使用 CoreData 集成。

【问题讨论】:

请注意,您引用的代码示例来自 0.10.x,而不是 0.2x,因此没有多大意义...您要查找的是 foreign key mapping @Wain 感谢您的编辑。我完全知道代码示例来自 0.10,这正是我问如何在 0.20 中做同样事情的原因! 但是你已经转换了大部分映射,只是你需要帮助的关系? 对不起,我的问题可能有点不清楚。我有一个功能齐全的应用程序,它使用 0.20.2 进行映射,但我已经尝试并失败了很长时间来获取从 FileItem 的映射,而不是从 ItemFile。这是我当前的映射代码:gist.github.com/DaGaMs/7105381 如您所见,我必须在 JSON 中为Items 发送一个“文件”数组,因为这是 RestKit 实际上获取关系映射的唯一方式。我希望获得有关如何从 JSON 中的单个标识符映射到 CoreData 关系的提示 【参考方案1】:

好的,您的映射将项目标识设置为identifier。在文件上,这与任何内容都不对应 - 它需要。添加一个瞬态属性并将item 映射到它(我们称之为itemIdentifier)。现在,您可以设置关系映射来填充核心数据关系(应该是双向的,我假设 item files):

[fileMapping addConnectionForRelationship:@"item" connectedBy:@ @"itemIdentifier": @"identifier" ];

【讨论】:

就是这样!非常感谢,我没有意识到我必须创建一个瞬态属性才能让它工作!【参考方案2】:

试试这个:

RKEntityMapping *mapping = [RKEntityMapping mappingForEntityForName:@"Item"
                                               inManagedObjectStore:[YourManagedObjectStore];
[mapping addAttributeMappingsFromDictionary:@
                                              @"sortOrder": @"sortOrder",
                                              @"id":@"itemID"
                                              ];

mapping.identificationAttributes = @[@"itemID"];

[mapping addRelationshipMappingWithSourceKeyPath:@"organization"
                                         mapping:fileMapping];

希望对你有帮助。

【讨论】:

有趣,所以你是说如果我有一对多关系Item <----organization---->> File,我必须将关系映射添加到“itemMapping”?我的问题是:如何设置“fileMapping”以便正确设置 Item 和 File 之间的 CoreData 关系? 好的,我刚刚测试了这个;不幸的是,它不起作用,即没有设置关系,而所有其他映射都可以正常工作。 这里使用的关系类型是用于嵌套 JSON(即直接,而不是外键)。

在 RestKit 中实现 RKReachabilityObserver 的最佳方法

】在RestKit中实现RKReachabilityObserver的最佳方法【英文标题】:BestwaytoimplementRKReachabilityObserverinRestKit【发布时间】:2012-01-0618:35:58【问题描述】:我已经在Xcode/RestKit中编写了一个基于选项卡的应用程序,并且正在尝试使用RKReachabil... 查看详情

如何通过 RestKit 0.20 发布到数据库

】如何通过RestKit0.20发布到数据库【英文标题】:HowtoPosttodatabaseviaRestKit0.20【发布时间】:2013-06-2121:47:26【问题描述】:我正在尝试使用restkit发布到API。当我按下保存帖子时,我收到一个错误,显示一个空帖子并警告说:Expecteds... 查看详情

RestKit 0.20 映射问题

】RestKit0.20映射问题【英文标题】:RestKit0.20Mappingproblems【发布时间】:2012-12-2115:50:36【问题描述】:我在发出请求并尝试将响应放入CoreData时收到以下错误。Performingmanagedobjectmappingwithanilmanagedobjectcache:Unabletoupdateexistingobjectinstance... 查看详情

在 restKit 0.20 中删除孤立对象

】在restKit0.20中删除孤立对象【英文标题】:DeletionofOrphanedobjectsinrestKit0.20【发布时间】:2014-01-2708:24:50【问题描述】:目前我正在努力删除Orphanedobjects。我有以下课程。映射器类在这个类中,我创建了我所有的RKObjectManagers并在... 查看详情

Restkit 0.20 对象在获取 json 响应后未映射

】Restkit0.20对象在获取json响应后未映射【英文标题】:Restkit0.20objectsarenotmappedaftergettingjsonresponse【发布时间】:2013-05-1420:37:08【问题描述】:我正在使用RestKit0.20。我正在尝试从本地rails应用程序下载json响应并将其保存到core-data... 查看详情

从 RestKit 0.10 更新到 0.20

】从RestKit0.10更新到0.20【英文标题】:UpdatefromRestKit0.10to0.20【发布时间】:2013-10-0414:58:55【问题描述】:我实际上正在将我的项目从ResKit0.10更新到0.20,但我遇到了一个问题。在我们的网络服务中,我们使用Windows身份验证和SSL,... 查看详情

RestKit 0.20:在 JSON 中使用动态扁平化层次结构

】RestKit0.20:在JSON中使用动态扁平化层次结构【英文标题】:RestKit0.20:flatteningthehierarchywithdynamicinJSON【发布时间】:2013-05-3106:37:42【问题描述】:我正在使用RestKit0.20,在将包含动态键的层次结构的JSON映射到一个对象时遇到问题... 查看详情

RestKit 0.20:restkit 对象映射使属性映射加倍

】RestKit0.20:restkit对象映射使属性映射加倍【英文标题】:RestKit0.20:restkitobjectmappingdoublesmappingofattributes【发布时间】:2013-01-2908:42:52【问题描述】:我正在使用RestKit0.20,并在使用带有点(.)的规范符号时检测到一种奇怪的映射行... 查看详情

使用 RestKit 0.20 初始化核心数据

】使用RestKit0.20初始化核心数据【英文标题】:CoreDatainitializationusingRestKit0.20【发布时间】:2013-04-1613:47:42【问题描述】:我正在尝试将使用Restkit0.1的现有应用更新到0.20,但在设置CoreDataStack时遇到了一些问题,因为它遇到了异... 查看详情

使用 RestKit 0.20 备份核心数据

】使用RestKit0.20备份核心数据【英文标题】:BackupcoredatawithRestKit0.20【发布时间】:2013-05-3008:42:55【问题描述】:我对RestKit还很陌生,而且我通常会使用RESTfulWeb服务同步核心数据。为了简化这一点,我决定使用RestKit仅将本地存... 查看详情

无法使用 RestKit 0.20 在构建之间持久化数据

】无法使用RestKit0.20在构建之间持久化数据【英文标题】:UnabletopersistdatabetweenbuildsusingRestKit0.20【发布时间】:2013-12-2417:50:49【问题描述】:所以我最近切换到了RestKit核心数据实现,并且在构建/应用程序启动之间持久化数据时... 查看详情

Restkit 0.20 嵌套对象数组映射问题

】Restkit0.20嵌套对象数组映射问题【英文标题】:Restkit0.20nestedarrayofobjectsmappingissue【发布时间】:2013-03-0600:52:48【问题描述】:我在使用RestKit0.20映射以下JSON负载时遇到问题我正在尝试将产品及其附件映射为包含以下对象的数组... 查看详情

RestKit 0.20 - 预期的内容类型(空)

】RestKit0.20-预期的内容类型(空)【英文标题】:RestKit0.20-Expectedcontenttype(null)【发布时间】:2012-11-2209:15:03【问题描述】:Restkit0.20有谁知道我为什么每次通话都会得到这个输出?关于追踪它有什么建议吗?我可以在调试输出中... 查看详情

使用 RestKit 0.20 的对象映射关系

】使用RestKit0.20的对象映射关系【英文标题】:ObjectMappingsRelationshipusingRestKit0.20【发布时间】:2013-01-2912:54:11【问题描述】:我尝试在我的iOS应用程序中使用RestKit0.20从服务器读取数据并收到以下错误://Error`…Irestkit:RKLog.m:34RestK... 查看详情

Restkit 0.20:在自己的静态库中构建存档时找不到

】Restkit0.20:在自己的静态库中构建存档时找不到【英文标题】:Restkit0.20:notfoundwhenbuildingarchiveinsideownstaticlibrary【发布时间】:2013-06-2811:06:29【问题描述】:我创建了自己的框架,它本身依赖于RestKit框架。我创建了一个使用我... 查看详情

RestKit 0.20 无法从服务器获取数据

】RestKit0.20无法从服务器获取数据【英文标题】:RestKit0.20can\'tgetdatafromserver【发布时间】:2014-11-0212:35:36【问题描述】:我是CoreData和RestKit的新手,我已经阅读了很多关于CoreData和RestKit的教程,但我仍然无法从服务器获取数据。... 查看详情

RestKit 0.20——创建新的 NSManagedObject 的首选方法是啥?

】RestKit0.20——创建新的NSManagedObject的首选方法是啥?【英文标题】:RestKit0.20— WhatisthepreferredwaytocreateanewNSManagedObject?RestKit0.20——创建新的NSManagedObject的首选方法是什么?【发布时间】:2012-12-0620:54:13【问题描述】:我很想知... 查看详情

RestKit 0.20:映射复杂的动态嵌套 JSON

】RestKit0.20:映射复杂的动态嵌套JSON【英文标题】:RestKit0.20:mappingcomplexdynamicnestedJSON【发布时间】:2014-04-1717:22:47【问题描述】:我对iOS开发和RestKit框架(使用0.20.3版)非常熟悉。单实体映射就像一个魅力。然而,当谈到动态... 查看详情