Ios 多功能MOC的Rest套件持久性/性能问题

Ios 多功能MOC的Rest套件持久性/性能问题,ios,multithreading,core-data,restkit,Ios,Multithreading,Core Data,Restkit,这是我第一次使用新版本的RestKit和多MOC,所以这个版本让我有点困惑。Im使用RestKit 0.20-pre5,am通过RestKit操作以及在整个应用程序中手动添加托管对象 RestKits提供两个MOC来管理性能:mainQueue和PersistantStore对象上下文。通过检查RestKits代码,所有新的托管对象都保存到mainQueue MOC(基于RKObjectManager第433行和各种指针地址的检查)。RestKit创建的对象可以很好地持久化(当然是在调用save

这是我第一次使用新版本的RestKit和多MOC,所以这个版本让我有点困惑。Im使用RestKit 0.20-pre5,am通过RestKit操作以及在整个应用程序中手动添加托管对象

RestKits提供两个MOC来管理性能:mainQueue和PersistantStore对象上下文。通过检查RestKits代码,所有新的托管对象都保存到mainQueue MOC(基于RKObjectManager第433行和各种指针地址的检查)。RestKit创建的对象可以很好地持久化(当然是在调用save之后),但是每当我在同一主队列MOC中创建自己的ManagedObject并保存它时,当我重新启动应用程序时,它们不会持久化。(我经常保存相关MOC)

这就是持久存储的用武之地。每当我将持久性存储与主队列MOC一起保存时,数据就会持久化。我想这与每当我在persistantStoreMOC上调用save(通过通知)时RKManagedObjectStore合并更改有关,所以。。。一切都好吧

问题是,每当我保存这两个上下文时,都会出现一个明显的延迟,该延迟至少持续1秒(最多可以变化3秒!)。这种滞后似乎会增加我创建的NSManagedObject的数量。我运行过仪器,没有内存问题。我必须错误地使用RestKits实现核心数据

对于我正在使用以下方法保存的记录:

- (void)saveContext
{
    __block BOOL _blockSuccess;
    __block NSError *_blockError;

    NSManagedObjectContext *persistantContext = [[[RKObjectManager sharedManager] managedObjectStore] persistentStoreManagedObjectContext];

    [globalManagedObjectContext performBlockAndWait:^{
            _blockSuccess = [globalManagedObjectContext save:&_blockError];
    }];
    if (! _blockSuccess) NSLog(@"Failed to save context: %@", _blockError);

    [persistantContext performBlock:^{
        _blockSuccess = [persistantContext save:&_blockError];
        if (! _blockSuccess) NSLog(@"Failed to save context: %@", _blockError);
    }];
}
每当我们想要保存应用程序的状态时,就会从单例对象调用它。(globalManagedObjectContext只是一个指向RestKits mainQueueObjectContext的宏)。删除persistantContext保存会消除延迟,但当然不会持久化数据

任何人的帮助(特别是布莱克·沃特斯;)都将不胜感激

干杯


Aron

我认为答案是使用RKAdditions类别添加到NSManagedObjectContext的
saveToPersistentStore:
方法

这是取自和


你在使用它的时候还有问题吗

我认为答案是使用RKAdditions类别添加到NSManagedObjectContext的
saveToPersistentStore:
方法

这是取自和


你在使用它的时候还有问题吗

你找到解决办法了吗?我也有同样的困惑。在我的例子中,我在所有代码中都使用了persistentStoreManagedObjectContext,这些更改可以很好地持久化,但我很确定这不是我想要的方法。你找到解决方案了吗?我也有同样的困惑。在我的例子中,我在所有代码中都使用了persistentStoreManagedObjectContext,并且这些更改保持得很好,但我非常确定这不是预期的方式。很抱歉,响应延迟,很遗憾,它不起作用。我也不能使用persistantStoreMOC,因为我在主上下文(通过RestKit下载)中有一些对象必须与创建的对象交互,所以解决方案无法工作。对不起,我收回这一点。。。它确实工作得很好,但有一个行为不端的清理方法,使我认为没有任何东西可以正确保存。很抱歉延迟响应,不幸的是,它不起作用。我也不能使用persistantStoreMOC,因为我在主上下文(通过RestKit下载)中有一些对象必须与创建的对象交互,所以解决方案无法工作。对不起,我收回这一点。。。它确实工作得很好,但有一种行为不端的清理方法,让我觉得没有什么东西可以妥善保存。