如何在核心数据中以1对多的关系链接现有值?

时间:2011-06-16 18:01:40

标签: iphone core-data nsmanagedobjectcontext nsfetchrequest

我正在尝试将已经在类别中的值链接到wod实体。因为我确实想为一个类别的每个记录调用一条新记录。不知道该怎么做。我正在考虑使用谓词,但我不确定如何从获取请求链接它。

这就是我的架构:

enter image description here

以下是尝试将它们链接在一起的代码:

 NSManagedObjectContext *context = [self managedObjectContext];
    Wod *wodInfo = [NSEntityDescription
                                       insertNewObjectForEntityForName:@"Wods" 
                                       inManagedObjectContext:context];
    [wodInfo setValue:@"Frank" forKey:@"name"];


    NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
    [request setEntity:[NSEntityDescription entityForName:@"Categories"
                                   inManagedObjectContext:context]];
    [request setPredicate:[NSPredicate predicateWithFormat:@"(name == %@", @"Time"]];

    // This is the part where i am unsure, since i am not exactly sure how to link them up
      Category *category = reques
      wodInfo.category = 



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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

NSError *error = nil;
NSArray *categories = [context executeFetchRequest:request error:&error];
Category *category = [categories lastObject];
wodInfo.category = category;

请注意拨打[context save:&error]的电话。您正在传递错误变量的地址,该地址未在您的代码中初始化,并且将引用随机地址,这可能会导致应用程序中出现奇怪的错误。我建议在将它传递给save:方法之前将其设置为nil。