放置对象映射的位置(在RestKIt中)

时间:2011-09-13 08:47:34

标签: objective-c mapping restkit

由于我不想劫持另一个线程,因此我提出了关于映射的问题。

首先阅读:Where's the best place to put object mappings in RestKit

我确信Blake Waters给出的答案很可能是非常正确的,因为他是一个比我更聪明,更有经验的人,但对我而言,逻辑告诉我将映射放在每个模型中:如果你改变某些东西在您的模型中,您只需滚动即可更改映射。

在我的AppDelegate中,我只需在每个模型中调用initMappings(或任何你想要调用的东西)。

3 个答案:

答案 0 :(得分:1)

我也喜欢用我的模型放置映射。我通过为每个模型添加一个类方法来实现它,这样我就可以随时随地获取映射。

+ (RKObjectMapping *)objectMapping 
{
    RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[self class]];

    [mapping mapKeyPath:@"Id"       toAttribute:@"id"];
    [mapping mapKeyPath:@"Subject"      toAttribute:@"subject"];
    [mapping mapKeyPath:@"Message"      toAttribute:@"message"];
    [mapping mapKeyPath:@"PostDate"     toAttribute:@"postDateStr"];
    [mapping mapKeyPath:@"StatusId"     toAttribute:@"statusId"];
    [mapping mapKeyPath:@"StatusDate"   toAttribute:@"statusDateStr"];

    mapping.setNilForMissingRelationships = YES;

    return mapping;
}

答案 1 :(得分:0)

我选择了创建类别的路线并将其放入其中。我在我的app委托类中创建了它,而不是映射提供程序。

我认为在模型中使用它的问题就像在另一个线程中描述的那样,如果你有关系,你最终可能会得到循环引用。

答案 2 :(得分:0)

我认为以你的方式思考是很自然的,因为你可以更好地控制代码及其清洁,但是你必须非常小心,正如许多人所说,循环引用的问题可以是个大麻烦。

关于该问题的一个解决方案是当你有一个A实体引用B,而B有A引用A时,那么在其中一个实体中你必须选择不直接映射实体,否则你将以循环结束。

当你拥有相同作用域的所有东西时,定义循环引用变得不可能,因为你需要B的初始定义来在A上添加它的引用,所以我刚才提到的解决方案就是在这种方法中自然的方法。 / p>

这取决于您和您的应用程序您想要使用哪种方法,这对您和您的团队来说更好。你必须在有缺陷的错误与清洁代码之间做出选择。