5

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

使用 RKObjectLoaderDelegate 方法获取对象时,我将值从字符串转换为整数objectLoader:willMapData:。我希望这就是我应该这样做的方式。

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

4

1 回答 1

9

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

[mapping mapKeyPath:@"type" toAttribute:@"typeString"]

并像这样发送:

[serializationMapping mapKeyPath:@"typeString" toAttribute:@"type"]

这样你根本不需要使用objectLoader:willMapData:,并且转换很好地嵌入到对象(类别)中。

于 2012-06-18T13:35:06.737 回答