【问题标题】:AFIncrementalStore with MagicalRecord and multiple stores带有 MagicalRecord 和多个商店的 AFIncrementalStore
【发布时间】: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 可以这样做吗?

【问题讨论】:

    标签: objective-c magicalrecord 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

    【讨论】:

      猜你喜欢
      • 2016-10-25
      • 2022-11-28
      • 1970-01-01
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多