2016-05-03 3 views
0

У меня есть сетевой парк моего приложения, которое обнаруживает устройства в сети и вставляет в coredata через Magical Record. Но это происходит на каком-то другом потоке, а не на главном потоке. Также у меня есть UITableView с fetchresultcontroller, который показывает устройства в виде таблицы. Но единственный вариант, как позволить fetchRequestController теперь о моих изменениях был, называя это:Сохранение контекста для каждого действия

[[NSManagedObjectContext MR_contextForCurrentThread] MR_saveToPersistentStoreAndWait]; 

После каждого изменения. Отсутствует Я что-то, или это правильный способ, как это сделать?

Пример:

[MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext){ 
    MyCDDevice * localDevice = [MyCDDevice MR_createEntityInContext:localContext]; 
    [localDevice initFromDictionary:dictionary]; 
}]; 

[[NSManagedObjectContext MR_contextForCurrentThread] MR_saveToPersistentStoreAndWait]; 
+0

Нет необходимости сохранять контекст при условии, что приложение запущено. Если приложение (возможно) не сработает (в этом случае вы можете сохранить контекст после некоторой важной записи). Сохранение контекста должно выполняться, когда приложение переходит на задний план и когда приложение вот-вот закончится. Чрезмерная запись на диск не рекомендуется. – bauerMusic

+0

Является ли ваш контекст ребенком основного контекста? – Wain

+0

@bauerMusic Спасибо, я думаю, что это так, но я хочу быть на 100% уверенным. –

ответ

0

Сохранить на каждом всей операции передачи данных, что рекомендуется MagicalRecord. После saveWithBlockAndWait: он сохраняется в постоянном хранилище, поэтому нет необходимости в MR_saveToPersistentStoreAndWait.

Смежные вопросы