我有一个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
答案 0 :(得分:1)
只需保存所有内容。当您拥有的数据远远多于一个屏幕上的数据时,核心数据将使您更轻松地仅加载显示所需的数据。然后,只需在您的实体中添加一个标志,当用户选择或取消选择产品时,该标志就会被设置(并保存)。
请注意,您可以使用普通对象和托管对象来执行此操作,但它会增加代码和复杂性,并且在内存和处理器使用方面效率都会降低。