从RestKit中的域模型中分离实体映射代码

时间:2014-05-12 16:37:03

标签: core-data restkit restkit-0.20

我正在按照本教程的要求在rest kit中组织代码

http://restkit-tutorials.com/code-organization-in-restkit-based-app/

我想将我的域模型与restKit映射分开。

所以我将所有映射添加到名为mappingProvider的类中。

RKEntityMapping *tableMapping = [RKEntityMapping mappingForEntityForName:@"Table" inManagedObjectStore:[HAObjectManager sharedManager].managedObjectStore];
tableMapping.identificationAttributes = @[@"tableID"];
[tableMapping addAttributeMappingsFromDictionary:@{
                                                   @"ID":@"tableID",
                                                   @"TableNumber":@"tableNumber",
                                                   @"NumberOfChairs":@"numberOfChairs"}];

映射提供程序需要对ManagedObjectStore的引用,我试图从名为RKObjectManager的{​​{1}}的自定义子类中获取该引用。 HAObjectManager调用此方法调用的HAObjectManager

[self setupResponseDescriptor]

此方法再次调用RKResponseDescriptor *tableResponseDescriptors = [RKResponseDescriptor responseDescriptorWithMapping:[MappingProvider tableMapping] method:RKRequestMethodGET pathPattern:@"/api/table" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]; [self addResponseDescriptor:tableResponseDescriptors]; ,再次调用[MappingProvider tableMapping]来获取managedObjectStore。如你所见这会导致无限循环

有谁知道我该如何解决? 例如,coreData managedObjectStore的sharedInsatnce。

1 个答案:

答案 0 :(得分:0)

您需要更改初始化顺序,根据您描述的结构,这不一定是微不足道的。如果不做重大的返工,大多数选项都是不愉快的。

打破递归的一个简单选项是向tableMapping添加一个参数,以便您可以将对象存储作为参数传递(因此您不需要回调部分初始化的单例)得到它。)