使用Restkit映射到REST时如何更改属性值?

Jel*_*lle 5 mapping json objective-c ios restkit

我有一个核心数据对象和一个REST Web界面,它对同一个属性使用不同的值.托管对象具有名为"type"的属性,该属性是整数(enum),REST接口具有名为"type"的字符串值(字符串如:"truck","car","moped").

在使用RKObjectLoaderDelegate方法获取对象时,我将值从字符串转换为整数objectLoader:willMapData:.我希望我应该怎么做.

我的问题:在放置/发布对象时,如何或在何处将值从整数(枚举)转换回字符串值?在序列化过程中是否有片刻可以操作put/post操作的值?我应该perpahps子类化序列化程序或RKManagedObjectMapping,还是我的委托在某些时候被调用,我可以更改属性的值?

jpa*_*ten 9

您可以通过为要映射的(NSManagedObject)类创建一个类别,并在此类别中添加将由Restkit使用的特殊属性来解决此问题.因此,在类别中添加属性typeString,将枚举(类型)转换为字符串,并将属性"typeString"映射到json,而不是"type".它看起来像接收:

[mapping mapKeyPath:@"type" toAttribute:@"typeString"]
Run Code Online (Sandbox Code Playgroud)

像这样发送:

[serializationMapping mapKeyPath:@"typeString" toAttribute:@"type"]
Run Code Online (Sandbox Code Playgroud)

这种方式您根本不需要使用objectLoader:willMapData:,并且转换很好地嵌入到对象(类别)中.