0

首先,我使用 MagicalRecord 来管理我的核心数据。所以现在我的数据库层工作得很好,每次发生更改时它都会保存更改。例如:我正在向表中添加一个新条目,它会立即写入存储在我的硬盘上的 db 文件。我想要实现的是将所有更改保留在内存中,并仅在单击“保存”命令时将它们写入 db 文件。

我认为执行 db 文件写入的调用是:

[managedObjectContext MR_saveToPersistentStoreAndWait];

因此,正如我所想,我可以在不调用该方法的情况下进行所有修改,然后单击“保存”,调用该方法。但是,它仅在线程未更改时才有效。每次,线程更改 ManagedObjectContext 都会被重置或重新创建,并且我会丢失所有数据。

编辑:刚刚在 Magical Record 中找到方法:

[NSPersistentStoreCoordinator MR_coordinatorWithInMemoryStore];

这是我问题的第一部分所需要的。虽然,我不知道如何从那种类型的协调员更改为

[NSPersistentStoreCoordinator MR_coordinatorWithSqliteStoreNamed:objectModelName];

不会丢失任何数据。

有谁知道如何做到这一点?!任何形式的帮助都非常感谢!

4

2 回答 2

0

检查这些选项:

1-有 setupCoreDataStackWithInMemoryStore 如果您想在内存中运行所有内容,这可能会有所帮助。

2-您可以在后台保存:

[MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext){

}];

3-获取默认上下文或线程的上下文

[NSManagedObjectContext MR_defaultContext];

[NSManagedObjectContext MR_contextForCurrentThread];

于 2013-10-21T22:05:54.983 回答
0

我通过认真研究发现了这一点。我需要使用

 NSPersistentStoreCoordinator *coordinator = [NSPersistentStoreCoordinator MR_coordinatorWithInMemoryStore];

在用户点击保存之前让我的数据“挂起”,我执行以下操作:

// psc - my current persistentStoreCoordinator; urlForStore - place where I'm gonna store SQLite
[psc migratePersistentStore:[psc persistentStores][0]  toURL:urlForStore options:nil withType:NSSQLiteStoreType error:&error];
于 2013-10-21T23:00:39.057 回答