ios - RestKit+CoreData+MagicalRecord : how not to persist managed objects

标签 ios core-data restkit magicalrecord

我有一个网络服务,它返回一个对象列表(数百种产品),这些对象不需要持久化,只是临时显示。

用户可以选择其中的任何一项,这些项目必须保存到数据库中。

是否可以仅使用一个 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/

相关文章:

iphone - 是需要一个单独的 NSManagedObjectContext 来回滚用户的 coredata 更改不好吗?

restkit - 我可以使用 RestKit 和 Realm.io 吗?

ios - 使用 corelocation 框架计算速度显示在模拟器中而不是在 device-ios8 中

iphone - 适用于 iOS 的 Google Drive 与 Google Doc?

ios - viewController View 未加载

ios - Core Data 的线程错误

iphone - 从 RestKit 0.10 更新到 0.20

ios - RestKit session 管理

ios - Cocoapods超时问题

android - InApp Purchase 内容在多个移动平台(iOS 和 Android)上的兼容性。