我有一个网络服务,它返回一个对象列表(数百种产品),这些对象不需要持久化,只是临时显示。
用户可以选择其中的任何一项,这些项目必须保存到数据库中。
是否可以仅使用一个 NSManagedObject 实体来管理这种情况?
使用这个响应描述符:
- (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 保存所选产品?
非常感谢, 丹
最佳答案
把它们全部保存起来。当您的数据远远超过一个屏幕可以容纳的数量时,核心数据将使您更容易仅加载显示所需的数据。然后,只需向您的实体添加一个标志,该标志会在用户选择或取消选择产品时设置(并保存)。
请注意,您可以使用普通对象和托管对象来完成此操作,但这对您来说需要更多代码和复杂性,而且在内存和处理器使用方面效率较低。
关于ios - RestKit+CoreData+MagicalRecord : how not to persist managed objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31861088/