RestKit + CoreData + MagicalRecord:如何不持久管理对象

时间:2015-08-06 16:27:34

标签: ios core-data restkit magicalrecord

我有一个webservice,它返回一个对象列表(数百种产品),这些对象不需要保留但只是暂时显示。

用户可以选择其中任何一项,并且必须将此类项目保存到数据库中。

是否可以仅使用一个NSManagedObject实体来管理此场景?

使用此respose描述符:

- (id)productsResultResponseDescriptor {

    RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Product class]];
    [mapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"products" toKeyPath:@"products" withMapping:[Product mapping]]];  
    ...
    return productsResultResponseDescriptor;
}

+ (RKObjectMapping *)mapping {
    RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[self class]];
    [mapping addAttributeMappingsFromDictionary:@{
                                   @"name":@"name",
                                   @"category":@"category"
                                }];
    return mapping;
}

使用此配置,我在RKMappingOperation的validateValue方法中遇到错误的访问异常。

它可以工作还是我应该有两个不同的对象

Product : NSObject
ManagedProduct : NSManagedObject

并使用前者使用RestKit进行数据检索,后者使用MagicalRecord保存所选产品?

非常感谢, DAN

1 个答案:

答案 0 :(得分:1)

只需保存所有内容。当您拥有的数据远远多于一个屏幕上的数据时,核心数据将使您更轻松地仅加载显示所需的数据。然后,只需在您的实体中添加一个标志,当用户选择或取消选择产品时,该标志就会被设置(并保存)。

请注意,您可以使用普通对象和托管对象来执行此操作,但它会增加代码和复杂性,并且在内存和处理器使用方面效率都会降低。