Я использую MagicalRecord в своем приложении iOS и не уверен в правильном способе сохранения.Эффективное сохранение с помощью MagicalRecord
Мое приложение предназначено для общения, и каждый раз, когда вошедший в систему пользователь получил сообщение, мне нужно обновить токен времени.
Теперь я так:
[MagicalRecord saveWithBlock:^(NSManagedObjectContext * localContext) {
User *currentUser = [User MR_findFirstByAttribute:@"id" withValue:@(_CURRENT_USER_ID) inContext:localContext]; currentUser.lastChatMessageTimeToken = [NSDate date]; }];
Однако, я считаю, что это не эффективно, потому что после того, как пользователь вошел в , его id определяется, и currentUser всегда один и тот же.
Я думаю, что я должен кэшировать currentUser как переменную экземпляра, но не могу найти соответствующий метод MagicalRecord.
Кроме того, мне сказали не кэшировать объект NSManagedObject, поскольку он привязан к контексту.
Так что я не уверен, что мне следует делать. Может ли кто-нибудь помочь?
Спасибо! Можете ли вы сказать мне разницу между saveToPersistentStoreAndWait и saveOnlySelfAndWait? Я попытался вызвать их в [NSManagedObjectContext MR_defaultContext], но последний, похоже, не сохраняет вообще. – HanXu
saveOnlySelfAndWait делает то, что говорит название. Это касается вложенных контекстов с родителями. Если вы сохраняете только один уровень, то вам нужно снова вызвать сохранение родителя, чтобы сохранить изменения на диске (при условии, что родительский контекст подключен к координатору) – casademora
Спасибо, я получил его :) – HanXu