带有 MagicalRecord 和多个商店的 AFIncrementalStore

Posted

技术标签:

【中文标题】带有 MagicalRecord 和多个商店的 AFIncrementalStore【英文标题】:AFIncrementalStore with MagicalRecord and multiple stores 【发布时间】:2014-04-11 09:33:09 【问题描述】:

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

[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:storeFileName];

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

现在我想使用 AFIncrementalStore 实现 API 调用,以实现应用程序的简单缓存和离线工作。 第一个问题如何在现有的 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】:

这是我用来设置 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

【讨论】:

以上是关于带有 MagicalRecord 和多个商店的 AFIncrementalStore的主要内容,如果未能解决你的问题,请参考以下文章

带有 MagicalRecord 的 JSONModel

带有primaryRelationshipKey的MagicalRecord

带有 UITableView 示例的 MagicalRecord

带有核心数据/MagicalRecord 意外行为的 iOS 单元测试

带有 MagicalRecord 庞大数据集的 UItableView

具有 MagicalRecord 的多个数据模型