MagicalRecord不保存多对关系实体

时间:2015-04-03 09:37:00

标签: ios core-data magicalrecord magicalrecord-2.2

当我第一次启动我的应用时,我创建了Show对象,其中包含与Feature实体的多对多关系。仅在第一次启动我的应用程序后,它正确存储我的显示对象及其正确的功能。问题是,当我第二次启动我的应用程序时,它会删除我的数据库中的所有功能,尽管第二次没有访问数据库(我们只是每5天更新一次)。

这里是我用于存储的代码:

-(void)insertOrUpdateShow:(Show_fr*)show withObjects:(NSDictionary*)item forMoc:(NSManagedObjectContext*)context
{
    if (!show)
    {
        show = [Show_fr MR_createInContext:context];
    }
    show.title                  = [item objectForKey:@"title"] ;
    show.latitude               = [item objectForKey:@"latitude"] ;
    show.longitude              = [item objectForKey:@"longitude"] ;
    NSArray * features          = [item objectForKey:@"feature"] ;
    for (NSDictionary * featureDict in features) {
        [show addFeaturesObject:[self createFeatureFromDictionnary:featureDict forMoc:context]];
    }
    [context MR_saveToPersistentStoreAndWait];
}

-(Feature_fr*)createFeatureFromDictionnary:(NSDictionary*)featureDictionary forMoc:(NSManagedObjectContext*)context
{
    Feature_fr * feature = [Feature_fr MR_createInContext:context];
    feature.icon    = [featureDictionary objectForKey:@"icon"] ;
    feature.label   = [featureDictionary objectForKey:@"label"] ;
    feature.value   = [featureDictionary objectForKey:@"value"] ;
    return feature;
}

只是为了确保在第一次发布时我在我的数据库中有6个节目和127个功能对象,并且从第二次我有6个节目但是0个功能。

请问您如何解决此问题?

问候

2 个答案:

答案 0 :(得分:0)

您可以使用魔法记录保存阻止知道您的数据在两个表中都已成功保存

[[yourObject managedObjectContext] MR_saveToPersistentStoreWithCompletion:^(BOOL contextDidSave, NSError *error) {

        if (!error) {
    NSLog(@"Object %@",object);
        }
 }];

在此代码中,“yourobject”是您要保存的对象

答案 1 :(得分:0)

在我的情况下,我忘了设置模型。

MagicalRecord.setDefaultModelFrom(Model.self)