2015-08-31 2 views
0

У меня есть этот код, сохранить для меня город, я получаю от внутреннего интерфейса, и она работает идеально в первый раз: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>) 

ответ

0

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

+0

Итак, я проверил ошибку, ноль, и успех - ДА. Какие детали вам нужны, на самом деле это всего лишь один метод здесь) –

+0

Я добавил журнал, кажется, что запись имеет другой идентификатор, но я не могу понять почему? –

+0

этот метод подходит для меня даже после удаления приложения из активного, он сохраняет для меня все изменения, + (void) saveInBackgroundWithBlock: (void (^) (NSManagedObjectContext * localContext)) завершение блока: (void (^) (void)) завершение __ атрибута __ ((устарело)); но он устарел. –

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