我正在按照本教程的要求在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。
答案 0 :(得分:0)
您需要更改初始化顺序,根据您描述的结构,这不一定是微不足道的。如果不做重大的返工,大多数选项都是不愉快的。
打破递归的一个简单选项是向tableMapping
添加一个参数,以便您可以将对象存储作为参数传递(因此您不需要回调部分初始化的单例)得到它。)