如何在Core Data中获取对象引用?

时间:2014-04-09 11:16:40

标签: ios objective-c core-data entity-relationship iphonecoredatarecipes

enter image description here

我正在从JSON填充数据的实体,说它是PhotographerPhoto。两者都有一些数据,我使用循环填充并管理ObjectContex ..

像这样,

NSMutableArray *ArrPhotographer= [[self.M3Arr objectForKey:@"LifeMag"]objectForKey:@"Photographer"];

for (int i = 0; i< ArrPhotographer.count; i++) {
 Photographer *  photographerObj = [NSEntityDescription insertNewObjectForEntityForName:@"PhotographerData"
                                               inManagedObjectContext:[self managedObjectContext]];
    NSMutableDictionary *tpDict = [cleanerListArr objectAtIndex:i];
    photographerObj.cleanerName = [tpDict objectForKey:@"photographerName"];
}

现在我已经为摄影师和照片实体做了这个,并且根据这张图片,我的杂志实体正在拥有此表中已存在的数据。如图所示,我与杂志的摄影师和摄影师建立了一种关系。

现在问题是,

如果表格中已存在摄影师姓名,我该如何将其与杂志实体连接。我需要该特定位置的托管对象参考。

(例如,有三位摄影师,Ron,Harry和Sunny现在为Photo Cover1我想要Ron的名字。然后我需要Ron的对象参考,当我预先填充它时。)

如何获取此对象参考?

// ****************编辑

我得到对象存在...但是没有如何获取对象和2)如何将它赋予上述x和y?

I am using this code to saving the data in Magazine

    Magazine *magObj = [NSEntityDescription insertNewObjectForEntityForName:@"Magazine"
                                                    inManagedObjectContext:[self managedObjectContext]];

    magObj .issueID=[NSNumber numberWithInt:1];
    magObj .photo= x;
    magObj .photographer = y;
####编辑2
   NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Cleaner"];
    [request setPredicate:[NSPredicate predicateWithFormat:@"cleanerName = %@", @"Robin"]];
    [request setFetchLimit:1];
    NSUInteger count = [[self managedObjectContext] countForFetchRequest:request error:nil];
    if (count == NSNotFound){

        NSLog(@"ERROR FOund");
    }
    // some error occurred
    else if (count == 0){

        NSLog(@"no matching object");
    }
    // no matching object
    else{

        NSLog(@"Found Match");

    }

1 个答案:

答案 0 :(得分:1)

您需要使用NSFetchRequest搜索上下文以查找要连接的相应对象。获取请求指定要搜索的实体类型,您需要添加NSPredicate以将结果过滤为您感兴趣的特定名称。

请注意,您可以使用名称列表运行单个提取请求,这样您只需在数据存储中获取一次信息,然后在对象创建/连接循环期间使用返回的列表。

如果您一次性加载所有数据,则可以创建一个包含托管对象实例的字典,以便您可以在不提取的情况下链接到它们。