MagicalRecord не сохраняет данные после закрытия приложения из процесса

У меня есть этот код, который сохраняет для меня город, который я получаю от бэкэнда, и он отлично работает впервые:

+ (void)saveCurrentCityWithParameters:(NSDictionary *)parameters
                          withSuccess:(OperationCompletionBlock)successBlock
                          withFailure:(OperationFailureBlock)failure
{
    [MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {

        KNCity *knCity = [KNCity MR_findFirstInContext:localContext];

        if (!knCity)
        {
            knCity = [KNCity MR_createInContext:localContext];
        }

        knCity.city_id = [NSNumber integerString:parameters[@"id"]];
        knCity.city_lat = [NSNumber doubleString:parameters[@"lat"]];
        knCity.city_lng = [NSNumber doubleString:parameters[@"lng"]];
        knCity.city_name = parameters[@"name"];

    } completion:^(BOOL success, NSError *error) {

        [KNFilterHelper disableAllFilters];

        [self requestFiltersWithSuccess:successBlock
                            withFailure:failure];

    }];
}

Во второй раз он также работает отлично, но в случае, если приложение все еще работает, если я удалю его из активного процесса, оно не сработает.

Следует ли мне его сохранить?

Первый запуск:

(lldb) po localContext
<NSManagedObjectContext: 0x7a351150>


(lldb) po knCity
<KNCity: 0x78fbc960> (entity: KNCity; id: 0x78fb5340 <x-coredata:///KNCity/t2C6E56FF-7DD0-4505-A8A2-974EA687A87A3> ; data: {
    "city_id" = 0;
    "city_lat" = 0;
    "city_lng" = 0;
    "city_name" = nil;
})

Свойства после первого заполнения

(lldb) po knCity
<KNCity: 0x78fbc960> (entity: KNCity; id: 0x78fb5340 <x-coredata:///KNCity/t2C6E56FF-7DD0-4505-A8A2-974EA687A87A3> ; data: {
    "city_id" = 26;
    "city_lat" = "51.151817";
    "city_lng" = "71.480124";
    "city_name" = "\U0410\U0441\U0442\U0430\U043d\U0430";
})

После смены города:

(lldb) po localContext
<NSManagedObjectContext: 0x78f8a230>

(lldb) po knCity
<KNCity: 0x78fd37c0> (entity: KNCity; id: 0x78fc1110 <x-coredata://38CD5A19-1361-438E-8FFE-0DC5388B737C/KNCity/p1> ; data: <fault>)

person Matrosov Alexander    schedule 31.08.2015    source источник


Ответы (1)


Без дополнительной информации я предлагаю проверить объект ошибки, чтобы убедиться, что ваши данные не проверяются. Например, если свойство не является необязательным и вы устанавливаете его равным нулю, вся операция сохранения завершится ошибкой. Это приведет к появлению описываемых вами симптомов, а именно к тому, что вы не видите данных между запусками приложения.

person casademora    schedule 31.08.2015
comment
Итак, я проверил, что ошибка равна нулю, а успех - ДА. Какие подробности вам нужны, на самом деле это только один способ здесь) - person Matrosov Alexander; 01.09.2015
comment
Я добавил журнал, кажется, у записи другой идентификатор, но я не могу понять почему? - person Matrosov Alexander; 01.09.2015
comment
этот метод работает хорошо для меня даже после удаления приложения из активного, он сохраняет для меня все изменения, + (void) saveInBackgroundWithBlock: (void (^) (NSManagedObjectContext * localContext)) завершение блока: (void (^) (void)) завершение __attribute __ ((устарело)); но он устарел. - person Matrosov Alexander; 01.09.2015
comment
Я обновил поды с 2.0.8 до 2.2, и все работает отлично! - person Matrosov Alexander; 01.09.2015
comment
хм, кажется, это не помогает - person Matrosov Alexander; 07.09.2015
comment
ты можешь помочь, что я делаю не так? Я обновил пакеты, но проблема, которую я описал, все еще не устранена - person Matrosov Alexander; 07.09.2015
comment
извините, это была моя ошибка) - person Matrosov Alexander; 07.09.2015
comment
Не могли бы вы тогда ответить на свой вопрос, чтобы мы могли узнать решение? - person casademora; 08.09.2015
comment
о, это была моя безумная проблема. Я дважды переписываю свою модель, используя местоположение ядра, поэтому автоматически определяю город и автоматически перезаписываю модель данных. так что это не связано с магическими записями или какими-либо версиями - person Matrosov Alexander; 10.09.2015
comment
мы можем закрыть вопрос, если вы удалите свой ответ. Я могу это удалить. Спасибо - person Matrosov Alexander; 10.09.2015