1

我正在尝试将数据保存到核心数据中。(主要型号及相关型号)。当我保存杀死主模型后保存但未保存相关模型时。我有以下代码:

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]);
    }

当我杀死一个应用程序时,不会保存参数,但会保存跟踪。Shat会导致问题吗?

4

2 回答 2

0

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

于 2013-09-06T08:39:31.777 回答
0

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

在 xcode 模型编辑器中选择您的实体,进入关系并确保您与 Argument 对象具有“多对多”关系。不要使用属性来链接你的对象,那是行不通的。

完成此操作后(您可以查看下面的图像),您可以将新对象与使用的“跟踪”对象相关联,[traceObject addArgumentsObject:argument]并以相同的方式删除它们。

进一步检查核心数据编程指南

模型 - 模型编辑器

关系的属性 -

关系的属性

船尾

于 2013-09-06T08:53:34.197 回答