/ / Как да запазите промените в паметта в паметта, преди да ги запазите в файл при записване на обаждане? - цел-c, macos, core-data, magicalrecord

Как да запазите промените в паметта в паметта, преди да ги запазите в файл при запазване на обаждането? - цел-c, macos, core-data, magicalrecord

На първо място използвам MagicalRecord, за да управлявам моятаОсновни данни. Така че сега слоят на базата данни работи чудесно и спестява промени всеки път, когато се случи промяната. Например: добавям нов запис към таблица и се записва в db файла, съхраняван на моя твърд диск веднага. Това, което искам да постигна, е да запазя всички промени в паметта и да ги напиша само на файла db върху "запазване" команда кликнете.

Разбрах, че обаждането, което прави файла с файла db, е:

[managedObjectContext MR_saveToPersistentStoreAndWait];

Както реших, мога да направя всичките си модификациибез да се обаждате на този метод, а след това върху "запазване" кликнете, обадете се на този метод. Въпреки това, той работи само ако нишката не се промени. Всеки път, нишката променя ManagedObjectContext, който се възстановява или пресъздава и губя всичките си данни.

EDIT: току-що намерен метод в Magical Record:

[NSPersistentStoreCoordinator MR_coordinatorWithInMemoryStore];

което ми е необходимо за първата част на моя проблем. Въпреки че не знам как да премина от този тип координатор към

[NSPersistentStoreCoordinator MR_coordinatorWithSqliteStoreNamed:objectModelName];

без да губят никакви данни.

Някой знае ли как да направи това правилно ?! Всякакъв вид помощ е наистина оценена!

Отговори:

0 за отговор № 1

Проверете следните опции:

1- Има setupCoreDataStackWithInMemoryStore, което може да ви помогне, ако искате да стартирате всичко в паметта.

2-Можете да запишете във фонов режим:

[MagicalRecord saveInBackgroundWithBlock: ^ (NSManagedObjectContext * localContext) {

}];

3-За да получите контекста по подразбиране или този за нишката

[NSManagedObjectContext MR_defaultContext];

[NSManagedObjectContext MR_contextForCurrentThread];


0 за отговор № 2

Разбрах го, като извърша сериозни изследвания. Трябва да използвам

 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];