Основные данные: не сохранение отношений в запусках - PullRequest
0 голосов
/ 03 марта 2012

UPDATE:
Я обнаружил проблему: при запуске приложения, чтобы обновить БД, я загрузил все действия, удалил все БД и вставил действия.
Таким образом, ссылка потеряна.
Спасибо!


У меня проблема с сохранением моих отношений. Это работает нормально, но когда я останавливаю симулятор и запускаю снова, отношения исчезают! Это мой код.

+ (BOOL) createViajeWithJson:(NSString *)responseJson dictParams:(NSDictionary *)dictParams{

    MOViaje *viaje = (MOViaje *)[NSEntityDescription insertNewObjectForEntityForName:@"Viaje" inManagedObjectContext:ApplicationDelegate.managedObjectContext];
    viaje.nombre = [dictParams valueForKey:@"nombreViaje"];
    viaje.destino = [dictParams valueForKey:@"destino"];
    viaje.timestamp = [NSDate date];


    NSArray *results = [responseJson JSONValue];  

    for (id object in results){
        // get the entity previously saved.
        MOActivity *tmpActivity = [MOActivity getActivityById:(NSNumber *)object];
        if (tmpActivity != nil) {
            [viaje addActivitiesViajeObject:tmpActivity];
            [tmpActivity addViajeObject:viaje];
        } 
    }       

    viaje.numActividades = [NSNumber numberWithInt:[results count]];     

    NSManagedObjectContext *moc = ApplicationDelegate.managedObjectContext;
    NSError *error = nil;
    if (![moc save:&error]) {
        // Save failed
        NSLog(@"Core Data Save Error: %@, %@", error, [error userInfo]);
        return NO;
    }
    return YES;
}

///////////////////

Я получил 'actvities', вызывающую эту функцию.

+ (NSArray *) getAllActivitiesFromViaje:(MOViaje *) viaje {
    NSArray *temp = [viaje.activitiesViaje allObjects] ;
    return temp;
}

После того, как я создаю 'viaje' и добавляю активность 'отношений', он возвращает 8, но когда я останавливаю симулятор и снова запускаю, он возвращает 0.

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 03 марта 2012

Вы экономите [results count] в viaje.numActividades.Однако в вашем цикле вы добавляете только те результаты JSON в viaje, которые имеют существующий идентификатор.Число совпадающих действий, очевидно, равно нулю.

Проверьте, имеют ли идентификаторы ожидаемые значения, и проверьте, правильно ли работает ваш метод getActivityById.

...