AFIncrementalStore与MagicalRecord和多个商店

时间:2014-04-11 09:33:09

标签: objective-c magicalrecord afincrementalstore

我有一个带有sqlite数据库的项目,并通过MagicalRecord库使用它:

[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:storeFileName];

在当前版本的应用程序中,我通过Transient对象使用Web服务(RPC):发送请求,将响应映射到对象并显示它。在数据库中,我只保存用户添加到收藏夹的项目。

现在我希望用AFIncrementalStore实现API调用,以便进行简单的缓存和app的离线工作。 第一个问题我如何在现有的CoreData堆栈中添加AFIncrementalStore?我试图在内存中添加商店,例如:

NSPersistentStoreCoordinator *coordinator = [NSPersistentStoreCoordinator MR_defaultStoreCoordinator];

AFIncrementalStore *incrementalStore = (AFIncrementalStore *)[coordinator addPersistentStoreWithType:[RPCAPIIncrementalStore type] configuration:nil URL:nil options:nil error:nil];
NSError *error = nil;
if (![incrementalStore.backingPersistentStoreCoordinator addPersistentStoreWithType:NSInMemoryStoreType configuration:nil URL:nil options:nil error:&error]) {
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();
}

但是当我尝试从我的本地数据库中获取实体时(我不需要api调用那些实体)我的api增量存储处理请求并尝试从服务器获取此项目!

如何正确配置堆栈以实现远程数据库和本地对象的高效工作?这可能是AFIncrementalStore吗?

1 个答案:

答案 0 :(得分:0)

这是我用来设置AFIncrementalStore的代码。应该是类似的设置:

[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"ShuffleModel.sqlite"];

    AFIncrementalStore *incrementalStore = (AFIncrementalStore *)[[NSPersistentStoreCoordinator MR_defaultStoreCoordinator] addPersistentStoreWithType:[SFIncrementalStore type] configuration:nil URL:nil options:nil error:nil];

    NSError *error = nil;

    if (![incrementalStore.backingPersistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSPersistentStore MR_defaultLocalStoreUrl] options:nil error:&error]){
        DDLogVerbose(@"Unresolved NSIncrementalStore error %@, %@", error, [error userInfo]);
        abort();
    }

不确定它是否对您有所帮助,但我能够通过使用NSMainQueueConcurrency来破解它来使其工作。它已迁移到AFNetworking 2.0,似乎工作正常。以下是代码:https://github.com/premosystems/AFIncrementalStore

请在此处查看问题:https://github.com/AFNetworking/AFIncrementalStore/issues/265