核心数据:不在发布中保存关系

时间:2012-03-03 10:32:26

标签: objective-c ios core-data

更新
我发现了问题:在启动应用程序时,升级数据库,我下载了所有活动,删除了所有数据库并插入了活动。
所以参考文献丢失了 谢谢!


我在保存我的关系时遇到了问题。它工作正常,但当我停止模拟器并再次启动时,关系消失了! 这是我的代码。

+ (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'并添加关系'activity'后,它返回8,但是当我停止模拟器并再次重新启动时,它返回0.

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您正在[results count]中保存viaje.numActividades。但是,在循环中,您只是将那些JSON结果添加到具有现有ID的viaje。匹配的活动数量显然为零。

检查ID是否具有您期望的值,并检查您的getActivityById方法是否正常工作。