相关数据保存Coredata

时间:2013-09-05 18:17:29

标签: ios objective-c core-data

我正在尝试将数据保存到核心数据中。 (主要型号和相关型号)。当我保存后,保存主模型已保存,但没有保存相关模型。 我有以下代码:

NSManagedObjectContext *context = [self managedObjectContext];


    Trace *trace = [NSEntityDescription
                    insertNewObjectForEntityForName:@"Trace"
                    inManagedObjectContext:context];


    trace.totalDistance = self.totalDistance;
    trace.averageSpeed = self.averageSpeed;
    trace.theBestSpeed = self.theBestSpeed;
    trace.stopTime = [NSNumber numberWithInt: self.stopTime];
    trace.time = self.time;
    NSMutableArray *nsa = [[NSMutableArray alloc] init];
     for (int i=0;i<locations.count;i++){
     CLLocation* cl =(CLLocation*) locations[i];
         Argument *point = [NSEntityDescription
                            insertNewObjectForEntityForName:@"Argument"
                            inManagedObjectContext:context];

     point.latitude = [NSNumber numberWithDouble:  cl.coordinate.latitude];
     point.langitude = [NSNumber numberWithDouble:  cl.coordinate.longitude];
     point.speed = self.speeds[i];
     [nsa addObject:point];
     }
    NSOrderedSet * ns = [[NSOrderedSet alloc] initWithArray:nsa];
    trace.points = ns;


    NSError *error;
    if (![context save:&error]) {
        NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
    }

当我杀死一个应用程序时,Arguments不会保存,但会保存Trace。沙可以导致问题??

2 个答案:

答案 0 :(得分:0)

很简单,当你在保存之前杀死应用程序时,它不会保存。没有惊喜。

答案 1 :(得分:0)

首先 - 确保您以正确的方式使用实体关系。

在xcode模型编辑器中选择您的实体,转到Relationships并确保您与Argument对象有“To-Many”关系。不要使用属性链接您的对象,这将无效。

执行此操作后(您可以检查下面的图像),使用[traceObject addArgumentsObject:argument]将新对象与“跟踪”对象相关联,然后以相同的方式将其删除。

进一步查看Core Data Programming guide

模特 - model editor

关系的属性 -

property of the relationship

阿夫特